Browse Source

Fixed ImGui shutdown when using custom allocator.

Branimir Karadžić 10 years ago
parent
commit
0d232051eb
2 changed files with 29 additions and 1 deletions
  1. 5 0
      3rdparty/.editorconfig
  2. 24 1
      3rdparty/ocornut-imgui/imgui.cpp

+ 5 - 0
3rdparty/.editorconfig

@@ -0,0 +1,5 @@
+root = true
+
+[ocornut-imgui/*]
+indent_style             = space
+indent_size              = 4

+ 24 - 1
3rdparty/ocornut-imgui/imgui.cpp

@@ -1070,7 +1070,7 @@ struct ImGuiState
     int                     FramerateSecPerFrameIdx;
     float                   FramerateSecPerFrameAccum;
 
-    ImGuiState()
+    void Clear()
     {
         Initialized = false;
         Font = NULL;
@@ -1117,6 +1117,26 @@ struct ImGuiState
         memset(FramerateSecPerFrame, 0, sizeof(FramerateSecPerFrame));
         FramerateSecPerFrameIdx = 0;
         FramerateSecPerFrameAccum = 0.0f;
+
+        Windows.clear();
+        RenderSortedWindows.clear();
+        CurrentWindowStack.clear();
+        Settings.clear();
+        ColorEditModeStorage.Clear();
+        ColorModifiers.clear();
+        StyleModifiers.clear();
+        FontStack.clear();
+        RenderDrawLists.clear();
+    }
+
+    ImGuiState()
+    {
+        Clear();
+    }
+
+    ~ImGuiState()
+    {
+        Clear();
     }
 };
 
@@ -1926,6 +1946,7 @@ void ImGui::Shutdown()
         ImGui::MemFree(g.Windows[i]);
     }
     g.Windows.clear();
+    g.RenderSortedWindows.clear();
     g.CurrentWindowStack.clear();
     g.RenderDrawLists.clear();
     g.FocusedWindow = NULL;
@@ -1960,6 +1981,8 @@ void ImGui::Shutdown()
         ImGui::MemFree(g.LogClipboard);
     }
 
+    GDefaultFontAtlas.Clear();
+
     g.Initialized = false;
 }