From f0e5677f29ccabb5bdb6061eb32fc41c3175e558 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 9 Oct 2002 06:44:45 +0000 Subject: [PATCH] Fixed mmap_xxxx_delay() to follow kernel code --- src/pcm/pcm_local.h | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index ce3e6a74..247b32ab 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -321,8 +321,34 @@ static inline snd_pcm_uframes_t snd_pcm_mmap_hw_offset(snd_pcm_t *pcm) return *pcm->hw.ptr % pcm->buffer_size; } -#define snd_pcm_mmap_playback_delay snd_pcm_mmap_playback_hw_avail -#define snd_pcm_mmap_capture_delay snd_pcm_mmap_capture_avail +static inline snd_pcm_uframes_t snd_pcm_mmap_playback_delay(snd_pcm_t *pcm) +{ + snd_pcm_state_t state = snd_pcm_state(pcm); + + switch (state) { + case SND_PCM_STATE_RUNNING: + case SND_PCM_STATE_DRAINING: + return snd_pcm_mmap_playback_hw_avail(pcm); + case SND_PCM_STATE_XRUN: + return -EPIPE; + default: + return -EBADFD; + } +} + +static inline snd_pcm_uframes_t snd_pcm_mmap_capture_delay(snd_pcm_t *pcm) +{ + snd_pcm_state_t state = snd_pcm_state(pcm); + + switch (state) { + case SND_PCM_STATE_RUNNING: + return snd_pcm_mmap_capture_hw_avail(pcm); + case SND_PCM_STATE_XRUN: + return -EPIPE; + default: + return -EBADFD; + } +} static inline snd_pcm_sframes_t snd_pcm_mmap_delay(snd_pcm_t *pcm) { -- 2.11.0