Improved mmap_write and mmap_read functions

This commit is contained in:
Jaroslav Kysela 2001-12-08 21:00:51 +00:00
parent 484c05ec36
commit 8ca451f0e1

View file

@ -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 snd_pcm_channel_area_t *a = snd_pcm_mmap_areas(pcm);
const char *buf = snd_pcm_channel_area_addr(a, offset); 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; break;
} }
case SND_PCM_ACCESS_MMAP_NONINTERLEAVED: 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]; const snd_pcm_channel_area_t *a = &areas[c];
bufs[c] = snd_pcm_channel_area_addr(a, offset); 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; break;
} }
default: 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); const snd_pcm_channel_area_t *a = snd_pcm_mmap_areas(pcm);
char *buf = snd_pcm_channel_area_addr(a, offset); 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; break;
} }
case SND_PCM_ACCESS_MMAP_NONINTERLEAVED: 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]; const snd_pcm_channel_area_t *a = &areas[c];
bufs[c] = snd_pcm_channel_area_addr(a, offset); 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: default:
assert(0); assert(0);