From cf4f4bc9c49eba76a0b45729cf2b35c63e9c033a Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 17 May 2005 15:36:18 +0000 Subject: [PATCH] Fix drain of dmix without data Fixed the drain of dmix plugin without any data. It should return immediately. --- src/pcm/pcm_dmix.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index a21762ec..2da13b67 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -487,9 +487,14 @@ static int snd_pcm_dmix_drain(snd_pcm_t *pcm) return -EBADFD; if (pcm->mode & SND_PCM_NONBLOCK) return -EAGAIN; - if (dmix->state == SND_PCM_STATE_PREPARED && - snd_pcm_mmap_playback_hw_avail(pcm) > 0) - snd_pcm_dmix_start(pcm); + if (dmix->state == SND_PCM_STATE_PREPARED) { + if (snd_pcm_mmap_playback_hw_avail(pcm) > 0) + snd_pcm_dmix_start(pcm); + else { + snd_pcm_dmix_drop(pcm); + return 0; + } + } stop_threshold = pcm->stop_threshold; if (pcm->stop_threshold > pcm->buffer_size) pcm->stop_threshold = pcm->buffer_size; -- 2.47.1