From f085a1fa49fac5b28da34e94a59944548bdb60e0 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 19 May 2023 13:28:17 +0200 Subject: [PATCH] impl-node: improve graph xrun detection Simply check for the state of the activation. --- src/pipewire/impl-node.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index a496f8d31..53954b982 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -1738,16 +1738,14 @@ static int node_ready(void *data, int status) uint32_t owner[2], reposition_owner; uint64_t min_timeout = UINT64_MAX; - if (SPA_UNLIKELY(state->pending > 0)) { + if (SPA_UNLIKELY(a->status != PW_NODE_ACTIVATION_FINISHED)) { pw_context_driver_emit_incomplete(node->context, node); - if (ratelimit_test(&node->rt.rate_limit, a->signal_time, SPA_LOG_LEVEL_DEBUG)) { - pw_log_debug("(%s-%u) graph not finished: state:%p quantum:%"PRIu64 - " pending %d/%d", node->name, node->info.id, - state, a->position.clock.duration, - state->pending, state->required); + pw_log_debug("(%s-%u) graph not finished: state:%p quantum:%"PRIu64 + " pending %d/%d", node->name, node->info.id, + state, a->position.clock.duration, + state->pending, state->required); + if (ratelimit_test(&node->rt.rate_limit, a->signal_time, SPA_LOG_LEVEL_DEBUG)) dump_states(node); - } - node_trigger(node); } else { uint64_t signal_time = a->signal_time; /* old nodes set the TRIGGERED status on node_ready, patch this