diff --git a/src/core/fullscreen_ui.cpp b/src/core/fullscreen_ui.cpp index 855242723..88b278f72 100644 --- a/src/core/fullscreen_ui.cpp +++ b/src/core/fullscreen_ui.cpp @@ -734,7 +734,8 @@ bool FullscreenUI::Initialize() if (s_state.initialized) return true; - if (s_state.tried_to_initialize) + // some achievement callbacks fire early while e.g. there is a load state popup blocking system init + if (s_state.tried_to_initialize || !ImGuiManager::IsInitialized()) return false; ImGuiFullscreen::SetAnimations(Host::GetBaseBoolSettingValue("Main", "FullscreenUIAnimations", true)); diff --git a/src/util/imgui_manager.cpp b/src/util/imgui_manager.cpp index 75258668e..2bbf3d1cc 100644 --- a/src/util/imgui_manager.cpp +++ b/src/util/imgui_manager.cpp @@ -311,6 +311,11 @@ ImGuiContext* ImGuiManager::GetMainContext() return s_state.imgui_context; } +bool ImGuiManager::IsInitialized() +{ + return (s_state.imgui_context != nullptr); +} + void ImGuiManager::SetScreenMargin(float margin) { s_state.screen_margin = std::max(margin, 0.0f); diff --git a/src/util/imgui_manager.h b/src/util/imgui_manager.h index d0bbff764..04463f37f 100644 --- a/src/util/imgui_manager.h +++ b/src/util/imgui_manager.h @@ -86,6 +86,9 @@ void Shutdown(); /// Returns main ImGui context. ImGuiContext* GetMainContext(); +/// Returns true if there is currently a context created. +bool IsInitialized(); + /// Sets the size of the screen margins, or "safe zone". void SetScreenMargin(float margin);