diff --git a/src/output/alsa_plugin.c b/src/output/alsa_plugin.c
index 8701159985852741c78d8b92b94ee2610b0320f3..48a40fb9b1b70a29bfcd4c30c29cd9636d1fb222 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