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