From 285c4928af79c1f5844277464832f060ded77f85 Mon Sep 17 00:00:00 2001 From: ailurux Date: Tue, 11 Feb 2025 12:43:01 +1100 Subject: [PATCH] Only change output mode if the new output mode is different --- src/tangara/audio/audio_fsm.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/tangara/audio/audio_fsm.cpp b/src/tangara/audio/audio_fsm.cpp index d479542a..7854818d 100644 --- a/src/tangara/audio/audio_fsm.cpp +++ b/src/tangara/audio/audio_fsm.cpp @@ -390,16 +390,20 @@ void AudioState::react(const OutputModeChanged& ev) { if (ev.set_to) { new_mode = *ev.set_to; } + std::shared_ptr new_output; switch (new_mode) { case drivers::NvsStorage::Output::kBluetooth: - sOutput = sBtOutput; - sI2SOutput->mode(IAudioOutput::Modes::kOff); + new_output = sBtOutput; break; case drivers::NvsStorage::Output::kHeadphones: - sOutput = sI2SOutput; - sBtOutput->mode(IAudioOutput::Modes::kOff); + new_output = sI2SOutput; break; } + if (new_output == sOutput) { + return; + } + sOutput->mode(IAudioOutput::Modes::kOff); + sOutput = new_output; sSampleProcessor->SetOutput(sOutput); updateOutputMode();