[Bf-blender-cvs] [6f16ce5df93] temp-modifier-rm-cddm: Just pass mesh=NULL to wrapped modifier when dm=NULL

Sybren A. Stüvel noreply at git.blender.org
Wed Apr 25 10:08:30 CEST 2018


Commit: 6f16ce5df931d33559573afe0c482b47941a9bf0
Author: Sybren A. Stüvel
Date:   Wed Apr 25 10:08:21 2018 +0200
Branches: temp-modifier-rm-cddm
https://developer.blender.org/rB6f16ce5df931d33559573afe0c482b47941a9bf0

Just pass mesh=NULL to wrapped modifier when dm=NULL

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

M	source/blender/blenkernel/intern/modifier.c

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

diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 8f4f5b79618..c95ed3bcd8f 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -1006,16 +1006,19 @@ void modifier_deformVerts_DM_deprecated(struct ModifierData *md, struct Depsgrap
 	}
 	else {
 		/* TODO(sybren): deduplicate all the copies of this code in this file. */
-		Mesh *new_mesh = BKE_libblock_alloc_notest(ID_ME);
-		BKE_mesh_init(new_mesh);
+		Mesh *new_mesh = NULL;
 		if (dm != NULL) {
+			new_mesh = BKE_libblock_alloc_notest(ID_ME);
+			BKE_mesh_init(new_mesh);
 			DM_to_mesh(dm, new_mesh, ob, CD_MASK_EVERYTHING, false);
 		}
 
 		mti->deformVerts(md, depsgraph, ob, new_mesh, vertexCos, numVerts, flag);
 
-		BKE_mesh_free(new_mesh);
-		MEM_freeN(new_mesh);
+		if (new_mesh != NULL) {
+			BKE_mesh_free(new_mesh);
+			MEM_freeN(new_mesh);
+		}
 	}
 }
 
@@ -1051,13 +1054,19 @@ void modifier_deformVertsEM_DM_deprecated(struct ModifierData *md, struct Depsgr
 		mti->deformVertsEM_DM(md, depsgraph, ob, editData, dm, vertexCos, numVerts);
 	}
 	else {
-		Mesh *mesh = BKE_libblock_alloc_notest(ID_ME);
-		BKE_mesh_init(mesh);
+		Mesh *mesh = NULL;
 		if (dm != NULL) {
+			mesh = BKE_libblock_alloc_notest(ID_ME);
+			BKE_mesh_init(mesh);
 			DM_to_mesh(dm, mesh, ob, CD_MASK_EVERYTHING, false);
 		}
 
 		mti->deformVertsEM(md, depsgraph, ob, editData, mesh, vertexCos, numVerts);
+
+		if (mesh != NULL) {
+			BKE_mesh_free(mesh);
+			MEM_freeN(mesh);
+		}
 	}
 }
 
@@ -1092,12 +1101,10 @@ struct DerivedMesh *modifier_applyModifier_DM_deprecated(struct ModifierData *md
 	}
 	else {
 		/* TODO(sybren): deduplicate all the copies of this code in this file. */
-		struct Mesh *mesh = ob->data;
-		BLI_assert(DEG_depsgraph_use_copy_on_write());
-		BLI_assert(mesh->id.tag & LIB_TAG_COPY_ON_WRITE); /* This should be a CoW mesh */
-		BLI_assert(BLI_findindex(&G.main->mesh, mesh) == -1); /* This should be a CoW mesh */
-
+		Mesh *mesh = NULL;
 		if (dm != NULL) {
+			mesh = BKE_libblock_alloc_notest(ID_ME);
+			BKE_mesh_init(mesh);
 			DM_to_mesh(dm, mesh, ob, CD_MASK_EVERYTHING, false);
 		}
 
@@ -1114,6 +1121,10 @@ struct DerivedMesh *modifier_applyModifier_DM_deprecated(struct ModifierData *md
 			BKE_mesh_free(new_mesh);
 			MEM_freeN(new_mesh);
 		}
+		if (mesh != NULL) {
+			BKE_mesh_free(mesh);
+			MEM_freeN(mesh);
+		}
 
 		return ndm;
 	}



More information about the Bf-blender-cvs mailing list