[Bf-blender-cvs] [a287c8d3c16] master: BMesh: skip partial updates when there is nothing to do

Campbell Barton noreply at git.blender.org
Sat Jun 26 09:08:11 CEST 2021


Commit: a287c8d3c160ba448424905a201c75fd97f9182a
Author: Campbell Barton
Date:   Sat Jun 26 16:55:14 2021 +1000
Branches: master
https://developer.blender.org/rBa287c8d3c160ba448424905a201c75fd97f9182a

BMesh: skip partial updates when there is nothing to do

===================================================================

M	source/blender/bmesh/intern/bmesh_mesh_normals.c
M	source/blender/bmesh/intern/bmesh_mesh_tessellate.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_mesh_normals.c b/source/blender/bmesh/intern/bmesh_mesh_normals.c
index bddd3da98b7..3e3fa2a2d9d 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_normals.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_normals.c
@@ -292,6 +292,10 @@ void BM_mesh_normals_update_with_partial_ex(BMesh *UNUSED(bm),
                                             const struct BMeshNormalsUpdate_Params *params)
 {
   BLI_assert(bmpinfo->params.do_normals);
+  /* While harmless, exit early if there is nothing to do. */
+  if (UNLIKELY((bmpinfo->verts_len == 0) && (bmpinfo->faces_len == 0))) {
+    return;
+  }
 
   BMVert **verts = bmpinfo->verts;
   BMFace **faces = bmpinfo->faces;
diff --git a/source/blender/bmesh/intern/bmesh_mesh_tessellate.c b/source/blender/bmesh/intern/bmesh_mesh_tessellate.c
index c9b027474e1..9f477bc8a9c 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_tessellate.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_tessellate.c
@@ -406,6 +406,10 @@ void BM_mesh_calc_tessellation_with_partial_ex(BMesh *bm,
                                                const struct BMeshCalcTessellation_Params *params)
 {
   BLI_assert(bmpinfo->params.do_tessellate);
+  /* While harmless, exit early if there is nothing to do (avoids ensuring the index). */
+  if (UNLIKELY(bmpinfo->faces_len == 0)) {
+    return;
+  }
 
   BM_mesh_elem_index_ensure(bm, BM_LOOP | BM_FACE);



More information about the Bf-blender-cvs mailing list