{
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:
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:
{
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:
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);