mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-12-16 08:56:42 -05:00
Improved mmap_write and mmap_read functions
This commit is contained in:
parent
484c05ec36
commit
8ca451f0e1
1 changed files with 12 additions and 4 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue