pcm: Wrap hw_ptr to boundary in pcm_ioplug

The function snd_pcm_ioplug_hw_ptr_update() always increased the hw_ptr
by delta, without wrapping it to the boundary. This would lead to
problems when after many hours, the hw_ptr would overflow.

Signed-off-by: Luciano Montanaro <luciano.montanaro@magnetimarelli.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
MONTANARO Luciano (MM) 2014-03-04 12:51:36 +01:00 committed by Jaroslav Kysela
parent 48f1b308cc
commit 688004a6ac

View file

@ -60,7 +60,7 @@ static void snd_pcm_ioplug_hw_ptr_update(snd_pcm_t *pcm)
delta = hw - io->last_hw; delta = hw - io->last_hw;
else else
delta = pcm->buffer_size + hw - io->last_hw; delta = pcm->buffer_size + hw - io->last_hw;
io->data->hw_ptr += delta; snd_pcm_mmap_hw_forward(io->data->pcm, delta);
io->last_hw = hw; io->last_hw = hw;
} else } else
io->data->state = SNDRV_PCM_STATE_XRUN; io->data->state = SNDRV_PCM_STATE_XRUN;