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); }