]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: fix return value of snd_pcm_share_slave_avail
authorAlexander E. Patrakov <patrakov@gmail.com>
Mon, 1 Sep 2014 19:29:36 +0000 (01:29 +0600)
committerTakashi Iwai <tiwai@suse.de>
Tue, 2 Sep 2014 05:20:36 +0000 (07:20 +0200)
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>
src/pcm/pcm_share.c

index 97705447dd6d4fed44ea736e1b907d377dc52299..c301c7af799a51573006f380a2f89dfe6a3480df 100644 (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;
        if (avail < 0)
                avail += pcm->boundary;
+       else if ((snd_pcm_uframes_t) avail >= pcm->boundary)
+               avail -= pcm->boundary;
        return avail;
 }