Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_editmesh.h1
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c13
-rw-r--r--source/blender/blenkernel/intern/editmesh.c23
-rw-r--r--source/blender/editors/mesh/editmesh_utils.c11
4 files changed, 16 insertions, 32 deletions
diff --git a/source/blender/blenkernel/BKE_editmesh.h b/source/blender/blenkernel/BKE_editmesh.h
index 310807370da..38c8cf12969 100644
--- a/source/blender/blenkernel/BKE_editmesh.h
+++ b/source/blender/blenkernel/BKE_editmesh.h
@@ -87,6 +87,7 @@ void BKE_editmesh_tessface_calc(BMEditMesh *em);
BMEditMesh *BKE_editmesh_create(BMesh *bm, const bool do_tessellate);
BMEditMesh *BKE_editmesh_copy(BMEditMesh *em);
BMEditMesh *BKE_editmesh_from_object(struct Object *ob);
+void BKE_editmesh_free_derivedmesh(BMEditMesh *em);
void BKE_editmesh_free(BMEditMesh *em);
void BKE_editmesh_update_linked_customdata(BMEditMesh *em);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index d7bdbb45752..4223e903113 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2256,18 +2256,7 @@ static void editbmesh_build_data(Scene *scene, Object *obedit, BMEditMesh *em, C
BKE_object_free_derived_caches(obedit);
BKE_object_sculpt_modifiers_changed(obedit);
- if (em->derivedFinal) {
- if (em->derivedFinal != em->derivedCage) {
- em->derivedFinal->needsFree = 1;
- em->derivedFinal->release(em->derivedFinal);
- }
- em->derivedFinal = NULL;
- }
- if (em->derivedCage) {
- em->derivedCage->needsFree = 1;
- em->derivedCage->release(em->derivedCage);
- em->derivedCage = NULL;
- }
+ BKE_editmesh_free_derivedmesh(em);
editbmesh_calc_modifiers(scene, obedit, em, &em->derivedCage, &em->derivedFinal, dataMask);
DM_set_object_boundbox(obedit, em->derivedFinal);
diff --git a/source/blender/blenkernel/intern/editmesh.c b/source/blender/blenkernel/intern/editmesh.c
index 88cef0ec031..65faf59978a 100644
--- a/source/blender/blenkernel/intern/editmesh.c
+++ b/source/blender/blenkernel/intern/editmesh.c
@@ -187,21 +187,24 @@ void BKE_editmesh_update_linked_customdata(BMEditMesh *em)
}
}
-/*does not free the BMEditMesh struct itself*/
-void BKE_editmesh_free(BMEditMesh *em)
+void BKE_editmesh_free_derivedmesh(BMEditMesh *em)
{
- if (em->derivedFinal) {
- if (em->derivedFinal != em->derivedCage) {
- em->derivedFinal->needsFree = 1;
- em->derivedFinal->release(em->derivedFinal);
- }
- em->derivedFinal = NULL;
- }
if (em->derivedCage) {
em->derivedCage->needsFree = 1;
em->derivedCage->release(em->derivedCage);
- em->derivedCage = NULL;
}
+ if (em->derivedFinal && em->derivedFinal != em->derivedCage) {
+ em->derivedFinal->needsFree = 1;
+ em->derivedFinal->release(em->derivedFinal);
+ }
+
+ em->derivedCage = em->derivedFinal = NULL;
+}
+
+/*does not free the BMEditMesh struct itself*/
+void BKE_editmesh_free(BMEditMesh *em)
+{
+ BKE_editmesh_free_derivedmesh(em);
BKE_editmesh_color_free(em);
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c
index 9f70135b787..1d8e506fe85 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -132,16 +132,7 @@ void EDBM_mesh_clear(BMEditMesh *em)
BM_mesh_clear(em->bm);
/* free derived meshes */
- if (em->derivedCage) {
- em->derivedCage->needsFree = 1;
- em->derivedCage->release(em->derivedCage);
- }
- if (em->derivedFinal && em->derivedFinal != em->derivedCage) {
- em->derivedFinal->needsFree = 1;
- em->derivedFinal->release(em->derivedFinal);
- }
-
- em->derivedCage = em->derivedFinal = NULL;
+ BKE_editmesh_free_derivedmesh(em);
/* free tessellation data */
em->tottri = 0;