Kaynağa Gözat

Internals: Removed unnecessary allocation indirection for g.LogClipboard (this only made sense when there was a global context instance)

omar 7 yıl önce
ebeveyn
işleme
023cc25c7c
2 değiştirilmiş dosya ile 6 ekleme ve 10 silme
  1. 5 8
      imgui.cpp
  2. 1 2
      imgui_internal.h

+ 5 - 8
imgui.cpp

@@ -3669,7 +3669,6 @@ void ImGui::Initialize(ImGuiContext* context)
 {
     ImGuiContext& g = *context;
     IM_ASSERT(!g.Initialized && !g.SettingsLoaded);
-    g.LogClipboard = IM_NEW(ImGuiTextBuffer)();
 
     // Add .ini handle for ImGuiWindow type
     ImGuiSettingsHandler ini_handler;
@@ -3736,9 +3735,7 @@ void ImGui::Shutdown(ImGuiContext* context)
         fclose(g.LogFile);
         g.LogFile = NULL;
     }
-    if (g.LogClipboard)
-        IM_DELETE(g.LogClipboard);
-    g.LogClipboard = NULL;
+    g.LogClipboard.clear();
 
     g.Initialized = false;
 }
@@ -4179,7 +4176,7 @@ void ImGui::LogText(const char* fmt, ...)
     if (g.LogFile)
         vfprintf(g.LogFile, fmt, args);
     else
-        g.LogClipboard->appendfv(fmt, args);
+        g.LogClipboard.appendfv(fmt, args);
     va_end(args);
 }
 
@@ -7973,10 +7970,10 @@ void ImGui::LogFinish()
             fclose(g.LogFile);
         g.LogFile = NULL;
     }
-    if (g.LogClipboard->size() > 1)
+    if (g.LogClipboard.size() > 1)
     {
-        SetClipboardText(g.LogClipboard->begin());
-        g.LogClipboard->clear();
+        SetClipboardText(g.LogClipboard.begin());
+        g.LogClipboard.clear();
     }
     g.LogEnabled = false;
 }

+ 1 - 2
imgui_internal.h

@@ -683,7 +683,7 @@ struct ImGuiContext
     // Logging
     bool                    LogEnabled;
     FILE*                   LogFile;                            // If != NULL log to stdout/ file
-    ImGuiTextBuffer*        LogClipboard;                       // Else log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
+    ImGuiTextBuffer         LogClipboard;                       // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
     int                     LogStartDepth;
     int                     LogAutoExpandMaxDepth;
 
@@ -783,7 +783,6 @@ struct ImGuiContext
 
         LogEnabled = false;
         LogFile = NULL;
-        LogClipboard = NULL;
         LogStartDepth = 0;
         LogAutoExpandMaxDepth = 2;