summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tangara/audio/audio_fsm.cpp12
1 files 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<IAudioOutput> 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();