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>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Alexander E. Patrakov 2014-09-02 01:29:36 +06:00 committed by Takashi Iwai
parent 99a2254f5f
commit 622b1b6bdb

View file

@ -128,6 +128,8 @@ static snd_pcm_uframes_t snd_pcm_share_slave_avail(snd_pcm_share_slave_t *slave)
avail += pcm->buffer_size; avail += pcm->buffer_size;
if (avail < 0) if (avail < 0)
avail += pcm->boundary; avail += pcm->boundary;
else if ((snd_pcm_uframes_t) avail >= pcm->boundary)
avail -= pcm->boundary;
return avail; return avail;
} }