From: Jaroslav Kysela Date: Sat, 8 Dec 2001 21:00:51 +0000 (+0000) Subject: Improved mmap_write and mmap_read functions X-Git-Tag: v1.0.3~537 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=8ca451f0e193267529c06df6b387b22634516f23;p=alsa-lib.git Improved mmap_write and mmap_read functions --- diff --git a/src/pcm/pcm_mmap.c b/src/pcm/pcm_mmap.c index 34ae9555..0dca3106 100644 --- a/src/pcm/pcm_mmap.c +++ b/src/pcm/pcm_mmap.c @@ -440,7 +440,9 @@ snd_pcm_sframes_t snd_pcm_write_mmap(snd_pcm_t *pcm, snd_pcm_uframes_t size) { const snd_pcm_channel_area_t *a = snd_pcm_mmap_areas(pcm); const char *buf = snd_pcm_channel_area_addr(a, offset); - err = _snd_pcm_writei(pcm, buf, size); + err = _snd_pcm_writei(pcm, buf, frames); + if (err >= 0) + frames = err; break; } case SND_PCM_ACCESS_MMAP_NONINTERLEAVED: @@ -453,7 +455,9 @@ snd_pcm_sframes_t snd_pcm_write_mmap(snd_pcm_t *pcm, snd_pcm_uframes_t size) const snd_pcm_channel_area_t *a = &areas[c]; bufs[c] = snd_pcm_channel_area_addr(a, offset); } - err = _snd_pcm_writen(pcm, bufs, size); + err = _snd_pcm_writen(pcm, bufs, frames); + if (err >= 0) + frames = err; break; } default: @@ -486,7 +490,9 @@ snd_pcm_sframes_t snd_pcm_read_mmap(snd_pcm_t *pcm, snd_pcm_uframes_t size) { const snd_pcm_channel_area_t *a = snd_pcm_mmap_areas(pcm); char *buf = snd_pcm_channel_area_addr(a, offset); - err = _snd_pcm_readi(pcm, buf, size); + err = _snd_pcm_readi(pcm, buf, frames); + if (err >= 0) + frames = err; break; } case SND_PCM_ACCESS_MMAP_NONINTERLEAVED: @@ -499,7 +505,9 @@ snd_pcm_sframes_t snd_pcm_read_mmap(snd_pcm_t *pcm, snd_pcm_uframes_t size) const snd_pcm_channel_area_t *a = &areas[c]; bufs[c] = snd_pcm_channel_area_addr(a, offset); } - err = _snd_pcm_readn(pcm->fast_op_arg, bufs, size); + err = _snd_pcm_readn(pcm->fast_op_arg, bufs, frames); + if (err >= 0) + frames = err; } default: assert(0);