mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-24 19:11:37 +02:00
MainWindow - Avoid excessive emulation state changes
Updates the Hardcore Changed callback to only signal EmulationStateChanged if the new Hardcore Mode setting is different from the previous one.
This commit is contained in:
@ -2010,9 +2010,14 @@ void MainWindow::ShowAchievementSettings()
|
||||
|
||||
void MainWindow::OnHardcoreChanged()
|
||||
{
|
||||
if (AchievementManager::GetInstance().IsHardcoreModeActive())
|
||||
bool hardcore_active = AchievementManager::GetInstance().IsHardcoreModeActive();
|
||||
if (hardcore_active)
|
||||
Settings::Instance().SetDebugModeEnabled(false);
|
||||
emit Settings::Instance().EmulationStateChanged(Core::GetState(Core::System::GetInstance()));
|
||||
// EmulationStateChanged causes several dialogs to redraw, including anything affected by hardcore
|
||||
// mode. Every dialog that depends on hardcore mode is redrawn by EmulationStateChanged.
|
||||
if (hardcore_active != m_former_hardcore_setting)
|
||||
emit Settings::Instance().EmulationStateChanged(Core::GetState(Core::System::GetInstance()));
|
||||
m_former_hardcore_setting = hardcore_active;
|
||||
}
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
|
@ -267,6 +267,7 @@ private:
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
AchievementsWindow* m_achievements_window = nullptr;
|
||||
Config::ConfigChangedCallbackID m_config_changed_callback_id;
|
||||
bool m_former_hardcore_setting = false;
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
AssemblerWidget* m_assembler_widget;
|
||||
|
Reference in New Issue
Block a user