Misc shutdown fixes

* Destroy the ImGui debugger explicitly, not at static destruction time

* Windows: destroy the debugger windows before NativeShutdown()

* Clear the disassembly cache where it goes stale, not in view destructors
  (behind a no-op stub for libretro, which doesn't build DisassemblyManager.cpp)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik Rydgård
2026-09-04 13:06:24 -06:00
co-authored by Claude Opus 5
parent 050cacbbdf
commit 1c7f393e2b
10 changed files with 29 additions and 15 deletions
+6
View File
@@ -1046,7 +1046,13 @@ void NativeShutdownGraphics(GraphicsContext *graphicsContext) {
}
ImGui_ImplThin3d_DestroyDeviceObjects();
ImGui_ImplThin3d_Shutdown();
// Destroy the debugger here, while the things it refers to are still alive. If left to
// static destruction, ~ImDisasmView runs after Core's globals are gone and its
// g_disassemblyManager.clear() walks a destroyed map (and locks a destroyed mutex).
imDebugger_.reset();
ImGui::DestroyContext(ctx_);
ctx_ = nullptr;
imguiInited_ = false;
}
#if PPSSPP_PLATFORM(WINDOWS) && !PPSSPP_PLATFORM(UWP)