[Bf-blender-cvs] [ecdd6a302e6] temp_bmesh_multires: Sculpt dyntopo: fix missing bit from last commit

Joseph Eagar noreply at git.blender.org
Wed Sep 15 11:51:23 CEST 2021


Commit: ecdd6a302e6c171ab163eb3272efec96d6da9097
Author: Joseph Eagar
Date:   Wed Sep 15 02:16:03 2021 -0700
Branches: temp_bmesh_multires
https://developer.blender.org/rBecdd6a302e6c171ab163eb3272efec96d6da9097

Sculpt dyntopo: fix missing bit from last commit

* BM_mesh_bm_to_me now saves id layers by default.

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

M	source/blender/blenkernel/intern/paint.c
M	source/blender/bmesh/intern/bmesh_log.c
M	source/blender/bmesh/intern/bmesh_mesh_convert.c
M	source/blender/bmesh/intern/bmesh_mesh_convert.h
M	source/blender/bmesh/intern/bmesh_mesh_convert_threaded.c
M	source/blender/bmesh/tests/bmesh_core_test.cc
M	source/blender/editors/sculpt_paint/sculpt_boundary.c

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

diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 4b03b41d2cb..ab7d32160e5 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1395,19 +1395,13 @@ static void sculptsession_bm_to_me_update_data_only(Object *ob, bool reorder)
           ss->bm,
           ob->data,
           (&(struct BMeshToMeshParams){.calc_object_remap = false,
-#ifdef WHEN_GLOBAL_UNDO_WORKS
-
                                        /*
                                         for memfile undo steps we need to
                                         save id and temporary layers
                                        */
                                        .copy_temp_cdlayers = true,
-                                       .copy_mesh_id_layers = true,
+                                       .ignore_mesh_id_layers = false,
                                        .cd_mask_extra = CD_MASK_MESH_ID | CD_MASK_DYNTOPO_VERT
-#else
-                                       .copy_temp_cdlayers = false,
-                                       .copy_mesh_id_layers = false
-#endif
 
           }));
     }
diff --git a/source/blender/bmesh/intern/bmesh_log.c b/source/blender/bmesh/intern/bmesh_log.c
index d767ef4529f..deb735c8cf3 100644
--- a/source/blender/bmesh/intern/bmesh_log.c
+++ b/source/blender/bmesh/intern/bmesh_log.c
@@ -1081,7 +1081,7 @@ static void bm_log_full_mesh_intern(BMesh *bm, BMLog *log, BMLogEntry *entry)
                                    .calc_object_remap = false,
                                    .cd_mask_extra = cd_mask_extra,
                                    .copy_temp_cdlayers = true,
-                                   .copy_mesh_id_layers = true}),
+                                   .ignore_mesh_id_layers = false}),
       NULL);
 }
 
diff --git a/source/blender/bmesh/intern/bmesh_mesh_convert.c b/source/blender/bmesh/intern/bmesh_mesh_convert.c
index 70d946a6f05..e5ea4461119 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.c
@@ -931,10 +931,10 @@ void BM_mesh_bm_to_me(
   {
     CustomData_MeshMasks mask = CD_MASK_MESH;
     CustomData_MeshMasks_update(&mask, &params->cd_mask_extra);
-    CustomDataMask extra2 = params->copy_mesh_id_layers ? CD_MASK_MESH_ID : 0;
+    CustomDataMask extra2 = !params->ignore_mesh_id_layers ? CD_MASK_MESH_ID : 0;
 
     // copy id layers? temporarily clear cd_temporary and cd_flag_elem_nocopy flags
-    if (params->copy_mesh_id_layers) {
+    if (!params->ignore_mesh_id_layers) {
       for (int i = 0; i < 4; i++) {
         int idx = CustomData_get_layer_index(srcdatas[i], CD_MESH_ID);
 
@@ -1313,7 +1313,7 @@ void BM_mesh_bm_to_me(
   BKE_mesh_runtime_clear_geometry(me);
 
   // restore original cd layer flags to bmesh id layers
-  if (params->copy_mesh_id_layers) {
+  if (!params->ignore_mesh_id_layers) {
     for (int i = 0; i < 4; i++) {
       int idx = CustomData_get_layer_index(srcdatas[i], CD_MESH_ID);
       if (idx >= 0) {
diff --git a/source/blender/bmesh/intern/bmesh_mesh_convert.h b/source/blender/bmesh/intern/bmesh_mesh_convert.h
index b40e3862427..4c46fda236a 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.h
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.h
@@ -67,7 +67,7 @@ struct BMeshToMeshParams {
   uint update_shapekey_indices : 1;
   struct CustomData_MeshMasks cd_mask_extra;
   uint copy_temp_cdlayers : 1;
-  uint copy_mesh_id_layers : 1;
+  uint ignore_mesh_id_layers : 1;
 };
 
 void BM_enter_multires_space(struct Object *ob, struct BMesh *bm, int space);
diff --git a/source/blender/bmesh/intern/bmesh_mesh_convert_threaded.c b/source/blender/bmesh/intern/bmesh_mesh_convert_threaded.c
index 97c148d27bd..1b5dc9643eb 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_convert_threaded.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert_threaded.c
@@ -853,7 +853,7 @@ void BM_mesh_bm_to_me_threaded(
 
   CustomData_MeshMasks mask = CD_MASK_MESH;
   CustomData_MeshMasks_update(&mask, &params->cd_mask_extra);
-  CustomDataMask extra2 = params->copy_mesh_id_layers ? CD_MASK_MESH_ID : 0;
+  CustomDataMask extra2 = !params->ignore_mesh_id_layers ? CD_MASK_MESH_ID : 0;
   CustomData *srcdatas[] = {&bm->vdata, &bm->edata, &bm->ldata, &bm->pdata};
   int id_flags[4] = {-1, -1, -1, -1};
 
@@ -861,7 +861,7 @@ void BM_mesh_bm_to_me_threaded(
   taskdata.extra2 = extra2;
 
   // copy id layers? temporarily clear cd_temporary and cd_flag_elem_nocopy flags
-  if (params->copy_mesh_id_layers) {
+  if (!params->ignore_mesh_id_layers) {
 
     for (int i = 0; i < 4; i++) {
       int idx = CustomData_get_layer_index(srcdatas[i], CD_MESH_ID);
@@ -902,7 +902,7 @@ void BM_mesh_bm_to_me_threaded(
 // BLI_threadpool_
 #  endif
   // undo changes to source bmesh's id layers' flags
-  if (params->copy_mesh_id_layers) {
+  if (!params->ignore_mesh_id_layers) {
     for (int i = 0; i < 4; i++) {
       int idx = CustomData_get_layer_index(srcdatas[i], CD_MESH_ID);
 
diff --git a/source/blender/bmesh/tests/bmesh_core_test.cc b/source/blender/bmesh/tests/bmesh_core_test.cc
index 91b14334d94..8770e16ac2b 100644
--- a/source/blender/bmesh/tests/bmesh_core_test.cc
+++ b/source/blender/bmesh/tests/bmesh_core_test.cc
@@ -10,10 +10,9 @@ TEST(bmesh_core, BMVertCreate)
   BMVert *bv1, *bv2, *bv3;
   const float co1[3] = {1.0f, 2.0f, 0.0f};
 
-  BMeshCreateParams bm_params;
+  BMeshCreateParams bm_params = {0};
+
   bm_params.use_toolflags = true;
-  bm_params.use_unique_ids = false;
-  bm_params.no_reuse_ids = false;
 
   bm = BM_mesh_create(&bm_mesh_allocsize_default, &bm_params);
   EXPECT_EQ(bm->totvert, 0);
diff --git a/source/blender/editors/sculpt_paint/sculpt_boundary.c b/source/blender/editors/sculpt_paint/sculpt_boundary.c
index 2e65c7afe65..8261b88d6bf 100644
--- a/source/blender/editors/sculpt_paint/sculpt_boundary.c
+++ b/source/blender/editors/sculpt_paint/sculpt_boundary.c
@@ -1270,8 +1270,7 @@ static void end_vis_object(SculptSession *ss, Object *ob, BMesh *bm)
                    me,
                    (&(struct BMeshToMeshParams){.calc_object_remap = false,
                                                 .update_shapekey_indices = false,
-                                                .copy_temp_cdlayers = false,
-                                                .copy_mesh_id_layers = false}));
+                                                .copy_temp_cdlayers = false}));
 
   DEG_id_tag_update(&me->id, ID_RECALC_ALL);
 }



More information about the Bf-blender-cvs mailing list