From 762565e9d11b19534cff2d74715af0645f3885d8 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 10 Mar 2010 19:48:27 +0100 Subject: output/jack: drain the ring buffers during pause If we're not doing this, and a new song is played after pause ends, then you will hear the rest of the previous song. --- src/output/jack_output_plugin.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/output/jack_output_plugin.c b/src/output/jack_output_plugin.c index 5a89d7919..110ee5f26 100644 --- a/src/output/jack_output_plugin.c +++ b/src/output/jack_output_plugin.c @@ -118,6 +118,13 @@ mpd_jack_process(jack_nframes_t nframes, void *arg) return 0; if (jd->pause) { + /* empty the ring buffers */ + + const jack_nframes_t available = mpd_jack_available(jd); + for (unsigned i = 0; i < jd->audio_format.channels; ++i) + jack_ringbuffer_read_advance(jd->ringbuffer[i], + available * sample_size); + /* generate silence while MPD is paused */ for (unsigned i = 0; i < jd->audio_format.channels; ++i) { -- cgit v1.2.3