From d2ce51d504ce4276c2b3802b96a37f81d945b3bb Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Wed, 8 Sep 2021 11:31:06 +0200 Subject: [PATCH] stream: decrement busy counter when releasing dequeued buffers For buffers on the 'dequeued' list, the busy counter was already incremented in impl_node_process_input(). So it must be decremented again when these buffers are removed. --- src/pipewire/stream.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index f5ae3a53f..ae9b40dc8 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -709,7 +709,15 @@ static void clear_buffers(struct pw_stream *stream) } } impl->n_buffers = 0; - clear_queue(impl, &impl->dequeued); + if (impl->direction == SPA_DIRECTION_INPUT) { + struct buffer *b; + + while ((b = pop_queue(impl, &impl->dequeued))) { + if (b->busy) + ATOMIC_DEC(b->busy->count); + } + } else + clear_queue(impl, &impl->dequeued); clear_queue(impl, &impl->queued); }