Explorar o código

ImDrawListClipper: avoid over reserving memory.

ocornut %!s(int64=4) %!d(string=hai) anos
pai
achega
2bf5ca7ef2
Modificáronse 1 ficheiros con 3 adicións e 0 borrados
  1. 3 0
      imgui_draw.cpp

+ 3 - 0
imgui_draw.cpp

@@ -1429,7 +1429,10 @@ void ImDrawListSplitter::Split(ImDrawList* draw_list, int channels_count)
     IM_ASSERT(_Current == 0 && _Count <= 1 && "Nested channel splitting is not supported. Please use separate instances of ImDrawListSplitter.");
     int old_channels_count = _Channels.Size;
     if (old_channels_count < channels_count)
+    {
+        _Channels.reserve(channels_count); // Avoid over reserving since this is likely to stay stable
         _Channels.resize(channels_count);
+    }
     _Count = channels_count;
 
     // Channels[] (24/32 bytes each) hold storage that we'll swap with draw_list->_CmdBuffer/_IdxBuffer