diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 2ac724f24..204ffc166 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -48,6 +48,9 @@ Docking+Viewports Branch: - Nav: fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused (the fix done in 1.92.3 was incomplete for docking branch). +- Viewports: DestroyContext() does not call DestroyPlatformWindows() anymore at + it assumed to be unnecessary as backensd should have done it and we check that + backends have been shutdown since 1.90.4. Changed into asserts. (#7175, #8945) ----------------------------------------------------------------------- diff --git a/imgui.cpp b/imgui.cpp index 3bb0dcd7e..a10765d30 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4415,6 +4415,11 @@ void ImGui::Shutdown() ImGuiContext& g = *GImGui; IM_ASSERT_USER_ERROR(g.IO.BackendPlatformUserData == NULL, "Forgot to shutdown Platform backend?"); IM_ASSERT_USER_ERROR(g.IO.BackendRendererUserData == NULL, "Forgot to shutdown Renderer backend?"); + for (ImGuiViewportP* viewport : g.Viewports) + { + IM_UNUSED(viewport); + IM_ASSERT_USER_ERROR(viewport->RendererUserData == NULL && viewport->PlatformUserData == NULL && viewport->PlatformHandle == NULL, "Backend or app forgot to call DestroyPlatformWindows()?"); + } // The fonts atlas can be used prior to calling NewFrame(), so we clear it even if g.Initialized is FALSE (which would happen if we never called NewFrame) for (ImFontAtlas* atlas : g.FontAtlases) @@ -4436,9 +4441,6 @@ void ImGui::Shutdown() if (g.SettingsLoaded && g.IO.IniFilename != NULL) SaveIniSettingsToDisk(g.IO.IniFilename); - // Destroy platform windows - DestroyPlatformWindows(); - // Shutdown extensions DockContextShutdown(&g);