From: Alexander E. Patrakov Date: Sat, 13 Sep 2014 18:30:13 +0000 (+0600) Subject: dmix: actually rewind when running or being drained X-Git-Tag: v1.0.29~51 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=9a56a673a6cd7343a9345921e2b1cbbb43fb725f;p=alsa-lib.git dmix: actually rewind when running or being drained Signed-off-by: Alexander E. Patrakov Signed-off-by: Jaroslav Kysela --- diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index 7c535093..73cbe3f8 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -669,11 +669,15 @@ static snd_pcm_sframes_t snd_pcm_dmix_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t f snd_pcm_direct_t *dmix = pcm->private_data; snd_pcm_uframes_t slave_appl_ptr, slave_size; snd_pcm_uframes_t appl_ptr, size, transfer, result; + int err; const snd_pcm_channel_area_t *src_areas, *dst_areas; if (dmix->state == SND_PCM_STATE_RUNNING || - dmix->state == SND_PCM_STATE_DRAINING) - return snd_pcm_dmix_hwsync(pcm); + dmix->state == SND_PCM_STATE_DRAINING) { + err = snd_pcm_dmix_hwsync(pcm); + if (err < 0) + return err; + } if (dmix->last_appl_ptr < dmix->appl_ptr) size = dmix->appl_ptr - dmix->last_appl_ptr;