[Bf-blender-cvs] [25ae5ab2d98] sculpt-dev: Sculpt-dev: fix crash in mask slice
Joseph Eagar
noreply at git.blender.org
Mon Apr 18 21:50:53 CEST 2022
Commit: 25ae5ab2d98c7e38f20cc5bfa9a20f2368c516d1
Author: Joseph Eagar
Date: Mon Apr 18 12:38:01 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rB25ae5ab2d98c7e38f20cc5bfa9a20f2368c516d1
Sculpt-dev: fix crash in mask slice
===================================================================
M source/blender/blenkernel/intern/paint.c
M source/blender/editors/mesh/editmesh_mask_extract.c
===================================================================
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 4ff999c91ed..9203630e81c 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1450,7 +1450,20 @@ static void sculptsession_free_pbvh(Object *object)
}
if (ss->pbvh) {
- BKE_pbvh_set_cached(object, ss->pbvh);
+ if (ss->needs_pbvh_rebuild) {
+ if (ss->pmap) {
+ BKE_pbvh_pmap_release(ss->pmap);
+ ss->pmap = NULL;
+ }
+
+ BKE_pbvh_cache_remove(ss->pbvh);
+ BKE_pbvh_free(ss->pbvh);
+ }
+ else {
+ BKE_pbvh_set_cached(object, ss->pbvh);
+ }
+
+ ss->needs_pbvh_rebuild = false;
ss->pbvh = NULL;
}
diff --git a/source/blender/editors/mesh/editmesh_mask_extract.c b/source/blender/editors/mesh/editmesh_mask_extract.c
index fdc1e6a6238..52dc6ac9b52 100644
--- a/source/blender/editors/mesh/editmesh_mask_extract.c
+++ b/source/blender/editors/mesh/editmesh_mask_extract.c
@@ -572,8 +572,9 @@ static int paint_mask_slice_exec(bContext *C, wmOperator *op)
if (ob->mode == OB_MODE_SCULPT) {
SculptSession *ss = ob->sculpt;
- /* Assign a new Face Set ID to the new faces created by the slice operation. */
+ BKE_sculptsession_update_attr_refs(ob);
+ /* Assign a new Face Set ID to the new faces created by the slice operation. */
switch (BKE_pbvh_type(ss->pbvh)) {
case PBVH_GRIDS:
case PBVH_FACES:
@@ -603,6 +604,8 @@ static int paint_mask_slice_exec(bContext *C, wmOperator *op)
break;
}
}
+
+ ss->needs_pbvh_rebuild = true;
}
ED_sculpt_undo_geometry_end(ob);
More information about the Bf-blender-cvs
mailing list