From fd585baa8825f87fbb048c8495fc954980732ab0 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 31 Jul 2023 12:10:36 +0200 Subject: [PATCH] alsa: don't change avail when unchanged Only update the avail when we did a snd_pcm_forward(). Otherwise we might think there is more available than there really is and we might get xrun. See #3395 --- spa/plugins/alsa/alsa-pcm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c index b28e29f12..35dd6ba0d 100644 --- a/spa/plugins/alsa/alsa-pcm.c +++ b/spa/plugins/alsa/alsa-pcm.c @@ -2498,9 +2498,10 @@ int spa_alsa_read(struct state *state) if (avail < target) max_read = target - avail; - else if (avail > target) + else if (avail > target) { snd_pcm_forward(state->hndl, avail - target); - avail = target; + avail = target; + } state->alsa_sync = false; } else state->alsa_sync_warning = true;