summaryrefslogtreecommitdiff
path: root/src/output/plugins/PipeWireOutputPlugin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/output/plugins/PipeWireOutputPlugin.cxx')
-rw-r--r--src/output/plugins/PipeWireOutputPlugin.cxx13
1 files 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{};