From c71b72ee27b6391550568e06444de66d50de5d8b Mon Sep 17 00:00:00 2001 From: Abramo Bagnara Date: Wed, 14 Feb 2001 09:36:00 +0000 Subject: [PATCH] Fixed longstanding avail compute bug. Cosmetic fixes --- src/pcm/pcm_hw.c | 5 +++-- src/pcm/pcm_local.h | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c index 1720aaaa..d38e53b1 100644 --- a/src/pcm/pcm_hw.c +++ b/src/pcm/pcm_hw.c @@ -496,9 +496,10 @@ static void snd_pcm_hw_dump(snd_pcm_t *pcm, snd_output_t *out) { snd_pcm_hw_t *hw = pcm->private_data; char *name = "Unknown"; - snd_card_get_name(hw->card, &name); + int err = snd_card_get_name(hw->card, &name); + assert(err >= 0); snd_output_printf(out, "Hardware PCM card %d '%s' device %d subdevice %d\n", - hw->card, name, hw->device, hw->subdevice); + hw->card, name, hw->device, hw->subdevice); free(name); if (pcm->setup) { snd_output_printf(out, "\nIts setup is:\n"); diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index ec2ecd5f..0bcd15b1 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -208,7 +208,9 @@ static inline snd_pcm_uframes_t snd_pcm_mmap_playback_avail(snd_pcm_t *pcm) { snd_pcm_sframes_t avail; avail = *pcm->hw_ptr + pcm->buffer_size - *pcm->appl_ptr; - if (avail < 0) + if (avail >= pcm->boundary) + avail -= pcm->boundary; + else if (avail < 0) avail += pcm->boundary; return avail; } @@ -226,8 +228,11 @@ static inline snd_pcm_uframes_t snd_pcm_mmap_avail(snd_pcm_t *pcm) { snd_pcm_sframes_t avail; avail = *pcm->hw_ptr - *pcm->appl_ptr; - if (pcm->stream == SND_PCM_STREAM_PLAYBACK) + if (pcm->stream == SND_PCM_STREAM_PLAYBACK) { avail += pcm->buffer_size; + if (avail >= pcm->boundary) + avail -= pcm->boundary; + } if (avail < 0) avail += pcm->boundary; return avail; -- 2.47.1