浏览代码

Internals: Initialize drawlist earlier in Begin() to facilitate detecting accidental draw earlier than legal. (#3311)

omar 5 年之前
父节点
当前提交
1a1dcea1a0
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      imgui.cpp

+ 2 - 1
imgui.cpp

@@ -5606,6 +5606,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
         window->HasCloseButton = (p_open != NULL);
         window->HasCloseButton = (p_open != NULL);
         window->ClipRect = ImVec4(-FLT_MAX,-FLT_MAX,+FLT_MAX,+FLT_MAX);
         window->ClipRect = ImVec4(-FLT_MAX,-FLT_MAX,+FLT_MAX,+FLT_MAX);
         window->IDStack.resize(1);
         window->IDStack.resize(1);
+        window->DrawList->_ResetForNewFrame();
 
 
         // Restore buffer capacity when woken from a compacted state, to avoid
         // Restore buffer capacity when woken from a compacted state, to avoid
         if (window->MemoryCompacted)
         if (window->MemoryCompacted)
@@ -5883,7 +5884,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
         // DRAWING
         // DRAWING
 
 
         // Setup draw list and outer clipping rectangle
         // Setup draw list and outer clipping rectangle
-        window->DrawList->_ResetForNewFrame();
+        IM_ASSERT(window->DrawList->CmdBuffer.Size == 1 && window->DrawList->CmdBuffer[0].ElemCount == 0);
         window->DrawList->PushTextureID(g.Font->ContainerAtlas->TexID);
         window->DrawList->PushTextureID(g.Font->ContainerAtlas->TexID);
         PushClipRect(host_rect.Min, host_rect.Max, false);
         PushClipRect(host_rect.Min, host_rect.Max, false);