output/PipeWire: call pw_stream_flush() in Cancel()

Clear not only MPD's ring buffer, but also libpipewire's buffers, to
avoid playing some audio from the previous song after a manual song
change.

Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1354
This commit is contained in:
Max Kellermann 2022-07-08 23:38:45 +02:00
parent 493677ff81
commit 547a084c7e
2 changed files with 6 additions and 0 deletions

1
NEWS
View File

@ -6,6 +6,7 @@ ver 0.23.8 (not yet released)
- cdio_paranoia: faster cancellation
- cdio_paranoia: don't scan for replay gain tags
- pipewire: fix playback of very short tracks
- pipewire: drop all buffers before manual song change
- snapcast: fix busy loop while paused
- snapcast: fix stuttering after resuming playback
* mixer

View File

@ -895,7 +895,12 @@ PipeWireOutput::Cancel() noexcept
if (drained)
return;
/* clear MPD's ring buffer */
ring_buffer->reset();
/* clear libpipewire's buffer */
pw_stream_flush(stream, false);
drained = true;
}
bool