From: Sava Jakovljev Date: Mon, 5 Jul 2021 18:28:34 +0000 (+0200) Subject: pcm: multi plugin - adjust appl_ptr on rewind/forward operations X-Git-Tag: v1.2.6~28 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=1aeea94ce81d2ccead17399a99bd0ecfe53025f0;p=alsa-lib.git pcm: multi plugin - adjust appl_ptr on rewind/forward operations When doing rewind or forward operations, application pointer needs to be properly adjusted, in the same way when doing commit/write operations. Fixes: https://github.com/alsa-project/alsa-lib/pull/161 Signed-off-by: Sava Jakovljev Signed-off-by: Jaroslav Kysela --- diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c index 5fa09b9b..7fb21276 100644 --- a/src/pcm/pcm_multi.c +++ b/src/pcm/pcm_multi.c @@ -669,6 +669,7 @@ static snd_pcm_sframes_t snd_pcm_multi_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t return -EIO; } } + snd_pcm_mmap_appl_backward(pcm, frames); return frames; } @@ -699,6 +700,7 @@ static snd_pcm_sframes_t snd_pcm_multi_forward(snd_pcm_t *pcm, snd_pcm_uframes_t return -EIO; } } + snd_pcm_mmap_appl_forward(pcm, frames); return frames; } @@ -782,8 +784,7 @@ static snd_pcm_sframes_t snd_pcm_multi_mmap_commit(snd_pcm_t *pcm, if ((snd_pcm_uframes_t)result != size) return -EIO; } - multi->appl_ptr += size; - multi->appl_ptr %= pcm->boundary; + snd_pcm_mmap_appl_forward(pcm, size); return size; }