diff --git a/NEWS b/NEWS index 8056bb7ba..141371245 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ ver 0.23.8 (not yet released) - cdio_paranoia: don't scan for replay gain tags - pipewire: fix playback of very short tracks - pipewire: drop all buffers before manual song change + - pipewire: fix stuttering after manual song change - snapcast: fix busy loop while paused - snapcast: fix stuttering after resuming playback * mixer diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx index 0f8550d41..16febe909 100644 --- a/src/output/plugins/PipeWireOutputPlugin.cxx +++ b/src/output/plugins/PipeWireOutputPlugin.cxx @@ -901,6 +901,15 @@ PipeWireOutput::Cancel() noexcept /* clear libpipewire's buffer */ pw_stream_flush(stream, false); drained = true; + + /* pause the PipeWire stream so libpipewire ceases invoking + the "process" callback (we have no data until our Play() + method gets called again); the stream will be resume by + Play() after the ring_buffer has been refilled */ + if (active) { + active = false; + pw_stream_set_active(stream, false); + } } bool