[alsa-devel] [PATCH alsa-lib] pcm: fix return value of snd_pcm_share_slave_avail
The return value was wrong for playback if slave->hw_ptr was near the boundary and *pcm->appl.ptr was near zero. The wrong result was greater than the boundary.
Signed-off-by: Alexander E. Patrakov patrakov@gmail.com --- src/pcm/pcm_share.c | 2 ++ 1 file changed, 2 insertions(+)
Only compile-tested, as I don't know how to setup the "share" pcm.
diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index 9770544..c301c7a 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -128,6 +128,8 @@ static snd_pcm_uframes_t snd_pcm_share_slave_avail(snd_pcm_share_slave_t *slave) avail += pcm->buffer_size; if (avail < 0) avail += pcm->boundary; + else if ((snd_pcm_uframes_t) avail >= pcm->boundary) + avail -= pcm->boundary; return avail; }
At Tue, 2 Sep 2014 01:29:36 +0600, Alexander E. Patrakov wrote:
The return value was wrong for playback if slave->hw_ptr was near the boundary and *pcm->appl.ptr was near zero. The wrong result was greater than the boundary.
Signed-off-by: Alexander E. Patrakov patrakov@gmail.com
Applied, thanks.
Takashi
src/pcm/pcm_share.c | 2 ++ 1 file changed, 2 insertions(+)
Only compile-tested, as I don't know how to setup the "share" pcm.
diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index 9770544..c301c7a 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -128,6 +128,8 @@ static snd_pcm_uframes_t snd_pcm_share_slave_avail(snd_pcm_share_slave_t *slave) avail += pcm->buffer_size; if (avail < 0) avail += pcm->boundary;
- else if ((snd_pcm_uframes_t) avail >= pcm->boundary)
return avail;avail -= pcm->boundary;
}
-- 2.1.0
participants (2)
-
Alexander E. Patrakov
-
Takashi Iwai