mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Tables, ImDrawListSplitter: Fixed erroneously stripping trailing ImDrawList::AddCallback().(#4843, #4844)
This commit is contained in:
		
				
					committed by
					
						
						ocornut
					
				
			
			
				
	
			
			
			
						parent
						
							41e39ea6e1
						
					
				
				
					commit
					83d22f4e48
				
			@@ -35,6 +35,8 @@ HOW TO UPDATE?
 | 
			
		||||
 VERSION 1.87 WIP (In Progress)
 | 
			
		||||
-----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
- Tables, ImDrawListSplitter: Fixed erroneously stripping trailing ImDrawList::AddCallback() when submitted in
 | 
			
		||||
  last column or last channel and when there are no other drawing operation. (#4843, #4844) [@hoffstadt]
 | 
			
		||||
- Backends: OpenGL3: Fixed a buffer overflow in imgui_impl_opengl3_loader.h init (added in 1.86). (#4468, #4830) [@dymk]
 | 
			
		||||
  It would generally not have noticeable side-effect at runtime but would be detected by runtime checkers.
 | 
			
		||||
- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz]
 | 
			
		||||
 
 | 
			
		||||
@@ -1733,9 +1733,7 @@ void ImDrawListSplitter::Merge(ImDrawList* draw_list)
 | 
			
		||||
    for (int i = 1; i < _Count; i++)
 | 
			
		||||
    {
 | 
			
		||||
        ImDrawChannel& ch = _Channels[i];
 | 
			
		||||
 | 
			
		||||
        // Equivalent of PopUnusedDrawCmd() for this channel's cmdbuffer and except we don't need to test for UserCallback.
 | 
			
		||||
        if (ch._CmdBuffer.Size > 0 && ch._CmdBuffer.back().ElemCount == 0)
 | 
			
		||||
        if (ch._CmdBuffer.Size > 0 && ch._CmdBuffer.back().ElemCount == 0 && ch._CmdBuffer.back().UserCallback == NULL) // Equivalent of PopUnusedDrawCmd()
 | 
			
		||||
            ch._CmdBuffer.pop_back();
 | 
			
		||||
 | 
			
		||||
        if (ch._CmdBuffer.Size > 0 && last_cmd != NULL)
 | 
			
		||||
 
 | 
			
		||||
@@ -2353,7 +2353,7 @@ void ImGui::TableMergeDrawChannels(ImGuiTable* table)
 | 
			
		||||
 | 
			
		||||
            // Don't attempt to merge if there are multiple draw calls within the column
 | 
			
		||||
            ImDrawChannel* src_channel = &splitter->_Channels[channel_no];
 | 
			
		||||
            if (src_channel->_CmdBuffer.Size > 0 && src_channel->_CmdBuffer.back().ElemCount == 0)
 | 
			
		||||
            if (src_channel->_CmdBuffer.Size > 0 && src_channel->_CmdBuffer.back().ElemCount == 0 && src_channel->_CmdBuffer.back().UserCallback != NULL) // Equivalent of PopUnusedDrawCmd()
 | 
			
		||||
                src_channel->_CmdBuffer.pop_back();
 | 
			
		||||
            if (src_channel->_CmdBuffer.Size != 1)
 | 
			
		||||
                continue;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user