Browse Source

Vulkan: Fix crash when viewports are disabled and memory leak on shutdown. (#2698)

Chris Savoie 6 years ago
parent
commit
949a9fa2cb
1 changed files with 10 additions and 1 deletions
  1. 10 1
      examples/imgui_impl_vulkan.cpp

+ 10 - 1
examples/imgui_impl_vulkan.cpp

@@ -850,8 +850,17 @@ bool    ImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass rend
 
 
 void ImGui_ImplVulkan_Shutdown()
 void ImGui_ImplVulkan_Shutdown()
 {
 {
-    ImGui_ImplVulkan_ShutdownPlatformInterface();
+    // First destroy objects in all viewports
     ImGui_ImplVulkan_DestroyDeviceObjects();
     ImGui_ImplVulkan_DestroyDeviceObjects();
+
+    // Manually delete main viewport render data in-case we haven't initialized for viewports
+    ImGuiViewport* main_viewport = ImGui::GetMainViewport();
+    if (ImGuiViewportDataVulkan* data = (ImGuiViewportDataVulkan*)main_viewport->RendererUserData)
+        IM_DELETE(data);
+    main_viewport->RendererUserData = NULL;
+
+    // Clean up windows
+    ImGui_ImplVulkan_ShutdownPlatformInterface();
 }
 }
 
 
 void ImGui_ImplVulkan_NewFrame()
 void ImGui_ImplVulkan_NewFrame()