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
+5 -3
View File
@@ -1312,6 +1312,11 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin
_dbg_assert_(mainThread.joinable());
mainThread.join();
// The debugger windows reach into core state as they go away (CtrlDisAsmView touches
// g_disassemblyManager, for example), so tear them down while the core is still around.
MainWindow::DestroyDebugWindows();
DialogManager::DestroyAll();
// It's safe to call NativeShutdown, we've joined the main thread.
NativeShutdown();
@@ -1319,9 +1324,6 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin
// g_InputManager.StopPolling() is called in WM_DESTROY
MainWindow::DestroyDebugWindows();
DialogManager::DestroyAll();
TimeShutdown();
UnRegisterCMPTMFApis();