summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2021-06-21 09:23:02 +0200
committerJaroslav Kysela <perex@perex.cz>2021-06-21 09:23:02 +0200
commit212c6c18c4317af48c007a0866efc029b9c3a593 (patch)
tree7d33da60f18a97ef7d07d1e90b8aaa98bc486444
parent3f737a2a2c8d20e78dea3ea836997f9d74f602a0 (diff)
downloadalsa-lib-212c6c18c4317af48c007a0866efc029b9c3a593.tar.gz
pcm: dmix - use pcm_frame_diff() in snd_pcm_dmix_sync_ptr0()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/pcm/pcm_dmix.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
index 608593f1..0d0d0bff 100644
--- a/src/pcm/pcm_dmix.c
+++ b/src/pcm/pcm_dmix.c
@@ -393,17 +393,13 @@ static int snd_pcm_dmix_sync_ptr0(snd_pcm_t *pcm, snd_pcm_uframes_t slave_hw_ptr
old_slave_hw_ptr = dmix->slave_hw_ptr;
dmix->slave_hw_ptr = slave_hw_ptr;
- diff = slave_hw_ptr - old_slave_hw_ptr;
+ diff = pcm_frame_diff(slave_hw_ptr, old_slave_hw_ptr, dmix->slave_boundary);
if (diff == 0) /* fast path */
return 0;
if (dmix->state != SND_PCM_STATE_RUNNING &&
dmix->state != SND_PCM_STATE_DRAINING)
/* not really started yet - don't update hw_ptr */
return 0;
- if (diff < 0) {
- slave_hw_ptr += dmix->slave_boundary;
- diff = slave_hw_ptr - old_slave_hw_ptr;
- }
dmix->hw_ptr += diff;
dmix->hw_ptr %= pcm->boundary;
if (pcm->stop_threshold >= pcm->boundary) /* don't care */