mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Tables, ImDrawListSplitter: Fixed erroneously stripping trailing ImDrawList::AddCallback().(#4843, #4844)
This commit is contained in:
		 Jonathan Hoffstadt
					Jonathan Hoffstadt
				
			
				
					committed by
					
						 ocornut
						ocornut
					
				
			
			
				
	
			
			
			 ocornut
						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