From a68da8a475292ba77cf144789b50c691ec83c719 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 5 Nov 2009 20:01:50 +0100 Subject: output/jack: clear ring buffers before activating After playback has stopped, the ring buffers may still contain samples. These will be played when playback is started the next time. We should clear the buffers each time. --- src/output/jack_output_plugin.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/output/jack_output_plugin.c') diff --git a/src/output/jack_output_plugin.c b/src/output/jack_output_plugin.c index 51c148282..8ada73efc 100644 --- a/src/output/jack_output_plugin.c +++ b/src/output/jack_output_plugin.c @@ -335,11 +335,16 @@ mpd_jack_start(struct jack_data *jd, GError **error_r) persist until MPD exits. It's too unsafe to delete them because we can never know when mpd_jack_process() gets called */ - for (unsigned i = 0; i < G_N_ELEMENTS(jd->ringbuffer); ++i) + for (unsigned i = 0; i < G_N_ELEMENTS(jd->ringbuffer); ++i) { if (jd->ringbuffer[i] == NULL) jd->ringbuffer[i] = jack_ringbuffer_create(jd->ringbuffer_size); + /* clear the ring buffer to be sure that data from + previous playbacks are gone */ + jack_ringbuffer_reset(jd->ringbuffer[i]); + } + if ( jack_activate(jd->client) ) { g_set_error(error_r, jack_output_quark(), 0, "cannot activate client"); -- cgit v1.2.3