From b1f28d6003d394a05c9f4bbcf8524509334121c1 Mon Sep 17 00:00:00 2001 From: borine <32966433+borine@users.noreply.github.com> Date: Fri, 22 Dec 2023 12:02:33 +0000 Subject: [PATCH] output/alsa: Fix (theoretical error in) ALSA device recovery It is not possible to prepare an ALSA device when it is is state SND_PCM_STATE_OPEN; it is necessary to set the hardware parameters first. This pedantic commit corrects that error. Note that in practice this code path cannot be encountered because MPD always sets the hardware parameters before attempting to start playback. --- src/output/plugins/AlsaOutputPlugin.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/output/plugins/AlsaOutputPlugin.cxx b/src/output/plugins/AlsaOutputPlugin.cxx index c37428855..15a51b758 100644 --- a/src/output/plugins/AlsaOutputPlugin.cxx +++ b/src/output/plugins/AlsaOutputPlugin.cxx @@ -910,7 +910,6 @@ AlsaOutput::Recover(int err) noexcept /* fall-through to snd_pcm_prepare: */ [[fallthrough]]; - case SND_PCM_STATE_OPEN: case SND_PCM_STATE_SETUP: case SND_PCM_STATE_XRUN: period_buffer.Rewind(); @@ -918,6 +917,7 @@ AlsaOutput::Recover(int err) noexcept err = snd_pcm_prepare(pcm); break; + case SND_PCM_STATE_OPEN: case SND_PCM_STATE_DISCONNECTED: case SND_PCM_STATE_DRAINING: /* can't play in this state; throw the error */