mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
pcm: rate: fix last_commit_ptr boundary wrapping
Wrap last_commit_ptr using boundary. Was just wrapped to 0, which is correct only if the buffer size, and hence the boundary, is an integer multiple of the period size. Fixes:467d69c5bc("Fix CPU hog with combination of rate plugin") Fixes:29041c5220("fix infinite draining of the rate plugin in SND_PCM_NONBLOCK mode") Link: https://lore.kernel.org/alsa-devel/20221230164814.901457-1-consult.awy@gmail.com/ Signed-off-by: Alan Young <consult.awy@gmail.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
9f2c68cef7
commit
2e82060ebc
1 changed files with 2 additions and 2 deletions
|
|
@ -1018,7 +1018,7 @@ static int snd_pcm_rate_sync_playback_area(snd_pcm_t *pcm, snd_pcm_uframes_t app
|
|||
slave_size -= rate->gen.slave->period_size;
|
||||
rate->last_commit_ptr += pcm->period_size;
|
||||
if (rate->last_commit_ptr >= pcm->boundary)
|
||||
rate->last_commit_ptr = 0;
|
||||
rate->last_commit_ptr -= pcm->boundary;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1163,7 +1163,7 @@ static int snd_pcm_rate_drain(snd_pcm_t *pcm)
|
|||
if (commit_err == 1) {
|
||||
rate->last_commit_ptr += psize;
|
||||
if (rate->last_commit_ptr >= pcm->boundary)
|
||||
rate->last_commit_ptr = 0;
|
||||
rate->last_commit_ptr -= pcm->boundary;
|
||||
} else if (commit_err == 0) {
|
||||
if (pcm->mode & SND_PCM_NONBLOCK) {
|
||||
commit_err = -EAGAIN;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue