Skip to content

Commit b76a449

Browse files
authored
Prohibit Channel Configuration changes during gameplay (#1432)
1 parent 2322b75 commit b76a449

File tree

3 files changed

+4
-21
lines changed

3 files changed

+4
-21
lines changed

UnleashedRecomp/apu/audio.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
void XAudioInitializeSystem();
1111
void XAudioRegisterClient(PPCFunc* callback, uint32_t param);
1212
void XAudioSubmitFrame(void* samples);
13-
void XAudioConfigValueChangedCallback(class IConfigDef* configDef);
1413

1514
uint32_t XAudioRegisterRenderDriverClient(be<uint32_t>* callback, be<uint32_t>* driver);
1615
uint32_t XAudioUnregisterRenderDriverClient(uint32_t driver);

UnleashedRecomp/apu/driver/sdl2_driver.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -150,18 +150,3 @@ void XAudioSubmitFrame(void* samples)
150150
SDL_QueueAudio(g_audioDevice, &audioFrames, sizeof(audioFrames));
151151
}
152152
}
153-
154-
void XAudioConfigValueChangedCallback(IConfigDef* configDef)
155-
{
156-
if (configDef == &Config::ChannelConfiguration)
157-
{
158-
if (g_audioThread->joinable())
159-
{
160-
g_audioThreadShouldExit = true;
161-
g_audioThread->join();
162-
}
163-
164-
CreateAudioDevice();
165-
CreateAudioThread();
166-
}
167-
}

UnleashedRecomp/ui/options_menu.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ static bool g_isEnterKeyBuffered = false;
9999
static bool g_canReset = false;
100100
static bool g_isLanguageOptionChanged = false;
101101
static bool g_titleAnimBegin = true;
102+
static EChannelConfiguration g_currentChannelConfig;
102103

103104
static double g_appearTime = 0.0;
104105

@@ -803,7 +804,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
803804
config->Callback(config);
804805

805806
VideoConfigValueChangedCallback(config);
806-
XAudioConfigValueChangedCallback(config);
807807

808808
Game_PlaySound("sys_worldmap_finaldecide");
809809
}
@@ -836,7 +836,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
836836
if (config->Value != s_oldValue)
837837
{
838838
VideoConfigValueChangedCallback(config);
839-
XAudioConfigValueChangedCallback(config);
840839

841840
if (config->ApplyCallback)
842841
config->ApplyCallback(config);
@@ -865,7 +864,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
865864
config->MakeDefault();
866865

867866
VideoConfigValueChangedCallback(config);
868-
XAudioConfigValueChangedCallback(config);
869867

870868
if (config->Callback)
871869
config->Callback(config);
@@ -1250,7 +1248,7 @@ static void DrawConfigOptions()
12501248
DrawConfigOption(rowCount++, yOffset, &Config::MasterVolume, true);
12511249
DrawConfigOption(rowCount++, yOffset, &Config::MusicVolume, true);
12521250
DrawConfigOption(rowCount++, yOffset, &Config::EffectsVolume, true);
1253-
DrawConfigOption(rowCount++, yOffset, &Config::ChannelConfiguration, true);
1251+
DrawConfigOption(rowCount++, yOffset, &Config::ChannelConfiguration, !OptionsMenu::s_isPause, cmnReason);
12541252
DrawConfigOption(rowCount++, yOffset, &Config::MusicAttenuation, AudioPatches::CanAttenuate(), &Localise("Options_Desc_OSNotSupported"));
12551253
DrawConfigOption(rowCount++, yOffset, &Config::BattleTheme, true);
12561254
break;
@@ -1791,7 +1789,7 @@ void OptionsMenu::Draw()
17911789
DrawFadeTransition();
17921790
}
17931791

1794-
s_isRestartRequired = Config::Language != App::s_language;
1792+
s_isRestartRequired = Config::Language != App::s_language || Config::ChannelConfiguration != g_currentChannelConfig;
17951793
}
17961794

17971795
void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType)
@@ -1807,6 +1805,7 @@ void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType)
18071805
g_categoryAnimMax = { 0.0f, 0.0f };
18081806
g_selectedItem = nullptr;
18091807
g_titleAnimBegin = true;
1808+
g_currentChannelConfig = Config::ChannelConfiguration;
18101809

18111810
/* Store button state so we can track it later
18121811
and prevent the first item being selected. */

0 commit comments

Comments
 (0)