From d7cca42ef6c720f455d1cc2c49c8667911f7ad78 Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Sun, 6 Aug 2023 10:03:49 +0100 Subject: [PATCH] Hierarchical culling - Add extra check to skeleton_attach_canvas_item Although this check shouldn't be able to fail currently, it provides a small level of extra logic checking at only small cost in DEV builds. --- drivers/gles2/rasterizer_storage_gles2.cpp | 7 +++++++ drivers/gles3/rasterizer_storage_gles3.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp index 144621fb184..ef74f2dd41a 100644 --- a/drivers/gles2/rasterizer_storage_gles2.cpp +++ b/drivers/gles2/rasterizer_storage_gles2.cpp @@ -3780,6 +3780,13 @@ void RasterizerStorageGLES2::skeleton_attach_canvas_item(RID p_skeleton, RID p_c ERR_FAIL_COND(!p_canvas_item.is_valid()); if (p_attach) { +#ifdef DEV_ENABLED + // skeleton_attach_canvas_item() is not bound, + // and checks in canvas_item_attach_skeleton() should prevent this, + // but there isn't much harm in a DEV_ENABLED check here. + int64_t found = skeleton->linked_canvas_items.find(p_canvas_item); + ERR_FAIL_COND(found != -1); +#endif skeleton->linked_canvas_items.push_back(p_canvas_item); } else { int64_t found = skeleton->linked_canvas_items.find(p_canvas_item); diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 54a288302ee..9dec192f4c6 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -5322,6 +5322,13 @@ void RasterizerStorageGLES3::skeleton_attach_canvas_item(RID p_skeleton, RID p_c ERR_FAIL_COND(!p_canvas_item.is_valid()); if (p_attach) { +#ifdef DEV_ENABLED + // skeleton_attach_canvas_item() is not bound, + // and checks in canvas_item_attach_skeleton() should prevent this, + // but there isn't much harm in a DEV_ENABLED check here. + int64_t found = skeleton->linked_canvas_items.find(p_canvas_item); + ERR_FAIL_COND(found != -1); +#endif skeleton->linked_canvas_items.push_back(p_canvas_item); } else { int64_t found = skeleton->linked_canvas_items.find(p_canvas_item);