diff --git a/src/frontend-common/common_host.cpp b/src/frontend-common/common_host.cpp index 8541ba393..9299c4bf3 100644 --- a/src/frontend-common/common_host.cpp +++ b/src/frontend-common/common_host.cpp @@ -372,6 +372,8 @@ void CommonHost::CheckForSettingsChanges(const Settings& old_settings) Achievements::UpdateSettings(old_settings); #endif + FullscreenUI::CheckForConfigChanges(old_settings); + if (g_settings.log_level != old_settings.log_level || g_settings.log_filter != old_settings.log_filter || g_settings.log_to_console != old_settings.log_to_console || g_settings.log_to_debug != old_settings.log_to_debug || g_settings.log_to_window != old_settings.log_to_window || diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp index 1a34751bf..833d78a23 100644 --- a/src/frontend-common/fullscreen_ui.cpp +++ b/src/frontend-common/fullscreen_ui.cpp @@ -578,6 +578,19 @@ bool FullscreenUI::HasActiveWindow() ImGuiFullscreen::IsChoiceDialogOpen() || ImGuiFullscreen::IsFileSelectorOpen()); } +void FullscreenUI::CheckForConfigChanges(const Settings& old_settings) +{ + if (!IsInitialized()) + return; + +#ifdef WITH_CHEEVOS + // If achievements got disabled, we might have the menu open... + // That means we're going to be reading achievement state. + if (old_settings.achievements_enabled && !g_settings.achievements_enabled) + ReturnToMainWindow(); +#endif +} + void FullscreenUI::OnSystemStarted() { if (!IsInitialized()) diff --git a/src/frontend-common/fullscreen_ui.h b/src/frontend-common/fullscreen_ui.h index 5297e5273..5fe1cbc9e 100644 --- a/src/frontend-common/fullscreen_ui.h +++ b/src/frontend-common/fullscreen_ui.h @@ -6,10 +6,13 @@ class HostDisplayTexture; +struct Settings; + namespace FullscreenUI { bool Initialize(); bool IsInitialized(); bool HasActiveWindow(); +void CheckForConfigChanges(const Settings& old_settings); void OnSystemStarted(); void OnSystemPaused(); void OnSystemResumed();