[Bf-blender-cvs] [ea269c2] master: Code cleanup: move edit-derivedmesh free to BKE_editmesh_free_derivedmesh

Campbell Barton noreply at git.blender.org
Fri Feb 28 10:12:58 CET 2014


Commit: ea269c21eaf663cd74c1c54acdcc9b0a0b19d3d4
Author: Campbell Barton
Date:   Fri Feb 28 20:02:30 2014 +1100
https://developer.blender.org/rBea269c21eaf663cd74c1c54acdcc9b0a0b19d3d4

Code cleanup: move edit-derivedmesh free to BKE_editmesh_free_derivedmesh

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

M	source/blender/blenkernel/BKE_editmesh.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/editmesh.c
M	source/blender/editors/mesh/editmesh_utils.c

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

diff --git a/source/blender/blenkernel/BKE_editmesh.h b/source/blender/blenkernel/BKE_editmesh.h
index 3108073..38c8cf1 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 d7bdbb4..4223e90 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 88cef0e..65faf59 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 9f70135..1d8e506 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;




More information about the Bf-blender-cvs mailing list