diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index 8a766dc6b7..99d38e4d6d 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -34,6 +34,7 @@ #include #endif +#include "Common/Config/Config.h" #include "Common/ScopeGuard.h" #include "Common/Version.h" #include "Common/WindowSystemInfo.h" @@ -277,7 +278,7 @@ MainWindow::MainWindow(Core::System& system, std::unique_ptr boo if (AchievementManager::GetInstance().IsHardcoreModeActive()) Settings::Instance().SetDebugModeEnabled(false); // This needs to trigger on both RA_HARDCORE_ENABLED and RA_ENABLED - Config::AddConfigChangedCallback( + m_config_changed_callback_id = Config::AddConfigChangedCallback( [this]() { QueueOnObject(this, [this] { this->OnHardcoreChanged(); }); }); // If hardcore is enabled when the emulator starts, make sure it turns off what it needs to if (Config::Get(Config::RA_HARDCORE_ENABLED)) @@ -351,6 +352,7 @@ MainWindow::~MainWindow() Settings::Instance().ResetNetPlayServer(); #ifdef USE_RETRO_ACHIEVEMENTS + Config::RemoveConfigChangedCallback(m_config_changed_callback_id); AchievementManager::GetInstance().Shutdown(); #endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index a43f98ead0..7684d4ad16 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -11,6 +11,10 @@ #include #include +#ifdef USE_RETRO_ACHIEVEMENTS +#include "Common/Config/Config.h" +#endif // USE_RETRO_ACHIEVEMENTS + #include "Core/Boot/Boot.h" class QMenu; @@ -261,6 +265,7 @@ private: #ifdef USE_RETRO_ACHIEVEMENTS AchievementsWindow* m_achievements_window = nullptr; + Config::ConfigChangedCallbackID m_config_changed_callback_id; #endif // USE_RETRO_ACHIEVEMENTS AssemblerWidget* m_assembler_widget;