mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-30 18:29:04 +08:00
ImDrawList: Simplified code and added check to avoid mis-recycling a callback command.
This commit is contained in:
parent
0873da85ec
commit
0b10bec71f
@ -176,8 +176,8 @@ void ImDrawList::UpdateClipRect()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try to merge with previous command if it matches, else use current command
|
// Try to merge with previous command if it matches, else use current command
|
||||||
ImDrawCmd* prev_cmd = CmdBuffer.Size > 1 ? &CmdBuffer.Data[CmdBuffer.Size-2] : NULL;
|
ImDrawCmd* prev_cmd = CmdBuffer.Size > 1 ? curr_cmd - 1 : NULL;
|
||||||
if (prev_cmd && memcmp(&prev_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) == 0 && prev_cmd->TextureId == GetCurrentTextureId())
|
if (prev_cmd && memcmp(&prev_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) == 0 && prev_cmd->TextureId == GetCurrentTextureId() && prev_cmd->UserCallback == NULL)
|
||||||
CmdBuffer.pop_back();
|
CmdBuffer.pop_back();
|
||||||
else
|
else
|
||||||
curr_cmd->ClipRect = curr_clip_rect;
|
curr_cmd->ClipRect = curr_clip_rect;
|
||||||
@ -195,8 +195,8 @@ void ImDrawList::UpdateTextureID()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try to merge with previous command if it matches, else use current command
|
// Try to merge with previous command if it matches, else use current command
|
||||||
ImDrawCmd* prev_cmd = CmdBuffer.Size > 1 ? &CmdBuffer.Data[CmdBuffer.Size-2] : NULL;
|
ImDrawCmd* prev_cmd = CmdBuffer.Size > 1 ? curr_cmd - 1 : NULL;
|
||||||
if (prev_cmd && prev_cmd->TextureId == curr_texture_id && memcmp(&prev_cmd->ClipRect, &GetCurrentClipRect(), sizeof(ImVec4)) == 0)
|
if (prev_cmd && prev_cmd->TextureId == curr_texture_id && memcmp(&prev_cmd->ClipRect, &GetCurrentClipRect(), sizeof(ImVec4)) == 0 && prev_cmd->UserCallback == NULL)
|
||||||
CmdBuffer.pop_back();
|
CmdBuffer.pop_back();
|
||||||
else
|
else
|
||||||
curr_cmd->TextureId = curr_texture_id;
|
curr_cmd->TextureId = curr_texture_id;
|
||||||
|
Loading…
Reference in New Issue
Block a user