diff --git a/UnleashedRecomp/apu/audio.h b/UnleashedRecomp/apu/audio.h index 1dbe9416..aaa0038f 100644 --- a/UnleashedRecomp/apu/audio.h +++ b/UnleashedRecomp/apu/audio.h @@ -10,7 +10,6 @@ void XAudioInitializeSystem(); void XAudioRegisterClient(PPCFunc* callback, uint32_t param); void XAudioSubmitFrame(void* samples); -void XAudioConfigValueChangedCallback(class IConfigDef* configDef); uint32_t XAudioRegisterRenderDriverClient(be* callback, be* driver); uint32_t XAudioUnregisterRenderDriverClient(uint32_t driver); diff --git a/UnleashedRecomp/apu/driver/sdl2_driver.cpp b/UnleashedRecomp/apu/driver/sdl2_driver.cpp index 787fab3d..d104e81f 100644 --- a/UnleashedRecomp/apu/driver/sdl2_driver.cpp +++ b/UnleashedRecomp/apu/driver/sdl2_driver.cpp @@ -150,18 +150,3 @@ void XAudioSubmitFrame(void* samples) SDL_QueueAudio(g_audioDevice, &audioFrames, sizeof(audioFrames)); } } - -void XAudioConfigValueChangedCallback(IConfigDef* configDef) -{ - if (configDef == &Config::ChannelConfiguration) - { - if (g_audioThread->joinable()) - { - g_audioThreadShouldExit = true; - g_audioThread->join(); - } - - CreateAudioDevice(); - CreateAudioThread(); - } -} diff --git a/UnleashedRecomp/ui/options_menu.cpp b/UnleashedRecomp/ui/options_menu.cpp index 5236ff51..33ac5c69 100644 --- a/UnleashedRecomp/ui/options_menu.cpp +++ b/UnleashedRecomp/ui/options_menu.cpp @@ -99,6 +99,7 @@ static bool g_isEnterKeyBuffered = false; static bool g_canReset = false; static bool g_isLanguageOptionChanged = false; static bool g_titleAnimBegin = true; +static EChannelConfiguration g_currentChannelConfig; static double g_appearTime = 0.0; @@ -803,7 +804,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef* conf config->Callback(config); VideoConfigValueChangedCallback(config); - XAudioConfigValueChangedCallback(config); Game_PlaySound("sys_worldmap_finaldecide"); } @@ -836,7 +836,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef* conf if (config->Value != s_oldValue) { VideoConfigValueChangedCallback(config); - XAudioConfigValueChangedCallback(config); if (config->ApplyCallback) config->ApplyCallback(config); @@ -865,7 +864,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef* conf config->MakeDefault(); VideoConfigValueChangedCallback(config); - XAudioConfigValueChangedCallback(config); if (config->Callback) config->Callback(config); @@ -1250,7 +1248,7 @@ static void DrawConfigOptions() DrawConfigOption(rowCount++, yOffset, &Config::MasterVolume, true); DrawConfigOption(rowCount++, yOffset, &Config::MusicVolume, true); DrawConfigOption(rowCount++, yOffset, &Config::EffectsVolume, true); - DrawConfigOption(rowCount++, yOffset, &Config::ChannelConfiguration, true); + DrawConfigOption(rowCount++, yOffset, &Config::ChannelConfiguration, !OptionsMenu::s_isPause, cmnReason); DrawConfigOption(rowCount++, yOffset, &Config::MusicAttenuation, AudioPatches::CanAttenuate(), &Localise("Options_Desc_OSNotSupported")); DrawConfigOption(rowCount++, yOffset, &Config::BattleTheme, true); break; @@ -1791,7 +1789,7 @@ void OptionsMenu::Draw() DrawFadeTransition(); } - s_isRestartRequired = Config::Language != App::s_language; + s_isRestartRequired = Config::Language != App::s_language || Config::ChannelConfiguration != g_currentChannelConfig; } void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) @@ -1807,6 +1805,7 @@ void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) g_categoryAnimMax = { 0.0f, 0.0f }; g_selectedItem = nullptr; g_titleAnimBegin = true; + g_currentChannelConfig = Config::ChannelConfiguration; /* Store button state so we can track it later and prevent the first item being selected. */