From 00fd692ebaf4dc2685aba8d97ea74159bc314bd1 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 10 Aug 2021 10:21:37 +0200 Subject: [PATCH] output/pipewire: wait for buffer to fill before resuming --- src/output/plugins/PipeWireOutputPlugin.cxx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx index fbc8208b9..82ea5cbbb 100644 --- a/src/output/plugins/PipeWireOutputPlugin.cxx +++ b/src/output/plugins/PipeWireOutputPlugin.cxx @@ -462,11 +462,6 @@ PipeWireOutput::Play(const void *chunk, size_t size) { const PipeWire::ThreadLoopLock lock(thread_loop); - if (paused) { - paused = false; - pw_stream_set_active(stream, true); - } - while (true) { CheckThrowError(); @@ -477,6 +472,14 @@ PipeWireOutput::Play(const void *chunk, size_t size) return bytes_written; } + if (paused) { + /* now that the ring_buffer is full, there is + enough data for Process(), so let's resume + the stream now */ + paused = false; + pw_stream_set_active(stream, true); + } + if (interrupted) throw AudioOutputInterrupted{};