From 4dc25d3908648cc781fe43e54243bb64aec4b2cb Mon Sep 17 00:00:00 2001 From: Jeffrey Middleton Date: Mon, 2 Nov 2009 23:52:13 -0600 Subject: [PATCH] alsa_plugin.c: workaround snd_pcm_drain bug Reintroduce a fix from commit 52a0653 (Warren Dukes): "don't call snd_pcm_drain unless we're already in the RUNNING state". This prevents ALSA with dmix from sometimes hanging when snd_pcm_drain is called, e.g. when moving from one song to the next (as in mantis issue 2634). --- src/output/alsa_plugin.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/output/alsa_plugin.c b/src/output/alsa_plugin.c index 870115998..48a40fb9b 100644 --- a/src/output/alsa_plugin.c +++ b/src/output/alsa_plugin.c @@ -500,7 +500,8 @@ alsa_drain(void *data) { struct alsa_data *ad = data; - snd_pcm_drain(ad->pcm); + if (snd_pcm_state(ad->pcm) == SND_PCM_STATE_RUNNING) + snd_pcm_drain(ad->pcm); } static void