From c4b93d744579336b22bdd17422bce1d2a06e49d6 Mon Sep 17 00:00:00 2001 From: Sava Jakovljev Date: Mon, 5 Jul 2021 20:28:34 +0200 Subject: [PATCH] Adjust appl_ptr for multi plugin 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. --- src/pcm/pcm_multi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c index 5fa09b9bf..cdd0605ae 100644 --- a/src/pcm/pcm_multi.c +++ b/src/pcm/pcm_multi.c @@ -669,6 +669,9 @@ 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 +702,9 @@ 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 +788,9 @@ 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; }