From c926021599c77b3011beec856cad535a5bedb1af Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 28 Jun 2019 08:27:48 +0200 Subject: [PATCH] output/alsa: always redo DrainInternal() after writing Draining isn't finished just because the period_buffer has run empty. It is only finished after snd_pcm_drain() has succeeded. --- NEWS | 1 + src/output/plugins/AlsaOutputPlugin.cxx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 1d066d290..542cd5d04 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ ver 0.21.11 (not yet released) - wildmidi: log error if library initialization fails * output - alsa: fix busy loop while draining + - alsa: fix missing drain call - alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs * protocol - fix "list" with multiple "group" levels diff --git a/src/output/plugins/AlsaOutputPlugin.cxx b/src/output/plugins/AlsaOutputPlugin.cxx index eefb7f467..16832a1bc 100644 --- a/src/output/plugins/AlsaOutputPlugin.cxx +++ b/src/output/plugins/AlsaOutputPlugin.cxx @@ -766,7 +766,7 @@ AlsaOutput::DrainInternal() /* need to call CopyRingToPeriodBuffer() and WriteFromPeriodBuffer() again in the next iteration, so don't finish the drain just yet */ - return period_buffer.IsEmpty(); + return false; } if (!written)