mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Fixed residual transfers
This commit is contained in:
parent
a5017e9ef0
commit
35632e8dd8
1 changed files with 27 additions and 16 deletions
|
|
@ -418,14 +418,20 @@ static ssize_t snd_pcm_rate_write_areas(snd_pcm_t *pcm,
|
|||
pcm->channels,
|
||||
rate->get_idx, rate->put_idx,
|
||||
rate->pitch, rate->states);
|
||||
err = snd_pcm_mmap_forward(slave, dst_frames);
|
||||
if (err < 0)
|
||||
break;
|
||||
assert((size_t)err == dst_frames);
|
||||
client_offset += src_frames;
|
||||
client_xfer += src_frames;
|
||||
snd_pcm_mmap_hw_forward(pcm, src_frames);
|
||||
slave_xfer += dst_frames;
|
||||
assert(src_frames || dst_frames);
|
||||
if (dst_frames > 0) {
|
||||
err = snd_pcm_mmap_forward(slave, dst_frames);
|
||||
if (err < 0)
|
||||
break;
|
||||
assert((size_t)err == dst_frames);
|
||||
slave_xfer += dst_frames;
|
||||
}
|
||||
|
||||
if (src_frames > 0) {
|
||||
client_offset += src_frames;
|
||||
client_xfer += src_frames;
|
||||
snd_pcm_mmap_hw_forward(pcm, src_frames);
|
||||
}
|
||||
}
|
||||
if (client_xfer > 0 || slave_xfer > 0) {
|
||||
if (slave_sizep)
|
||||
|
|
@ -464,14 +470,19 @@ static ssize_t snd_pcm_rate_read_areas(snd_pcm_t *pcm,
|
|||
pcm->channels,
|
||||
rate->get_idx, rate->put_idx,
|
||||
rate->pitch, rate->states);
|
||||
err = snd_pcm_mmap_forward(slave, src_frames);
|
||||
if (err < 0)
|
||||
break;
|
||||
assert((size_t)err == src_frames);
|
||||
client_offset += dst_frames;
|
||||
client_xfer += dst_frames;
|
||||
snd_pcm_mmap_hw_forward(pcm, dst_frames);
|
||||
slave_xfer += src_frames;
|
||||
assert(src_frames || dst_frames);
|
||||
if (src_frames > 0) {
|
||||
err = snd_pcm_mmap_forward(slave, src_frames);
|
||||
if (err < 0)
|
||||
break;
|
||||
assert((size_t)err == src_frames);
|
||||
slave_xfer += src_frames;
|
||||
}
|
||||
if (dst_frames > 0) {
|
||||
client_offset += dst_frames;
|
||||
client_xfer += dst_frames;
|
||||
snd_pcm_mmap_hw_forward(pcm, dst_frames);
|
||||
}
|
||||
}
|
||||
if (client_xfer > 0 || slave_xfer > 0) {
|
||||
if (slave_sizep)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue