[Bf-blender-cvs] [cb9fe2b39b0] temp-modifier-rm-cddm: Operate on CoW mesh directly, only use DM when not NULL

Sybren A. Stüvel noreply at git.blender.org
Thu Apr 19 17:23:54 CEST 2018


Commit: cb9fe2b39b07002272a571ff3e3fe14de1e671a9
Author: Sybren A. Stüvel
Date:   Thu Apr 19 11:53:36 2018 +0200
Branches: temp-modifier-rm-cddm
https://developer.blender.org/rBcb9fe2b39b07002272a571ff3e3fe14de1e671a9

Operate on CoW mesh directly, only use DM when not 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 8f372a8fa93..abe39d72220 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -985,14 +985,15 @@ void modifier_deformVerts_DM_deprecated(struct ModifierData *md, struct Depsgrap
 		mti->deformVerts_DM(md, depsgraph, ob, dm, vertexCos, numVerts, flag);
 	}
 	else {
-		struct Mesh mesh;
-		BKE_mesh_init(&mesh);
-
-		DM_to_mesh(dm, &mesh, ob, CD_MASK_EVERYTHING, false);
+		struct Mesh *mesh = ob->data;
+		BLI_assert(BLI_findindex(&G.main->mesh, mesh) == -1); /* This should be a CoW mesh */
 
-		mti->deformVerts(md, depsgraph, ob, &mesh, vertexCos, numVerts, flag);
+		if (dm != NULL) {
+			DM_to_mesh(dm, mesh, ob, CD_MASK_EVERYTHING, false);
+		}
 
-		BKE_mesh_free(&mesh);
+		BLI_assert(mesh->emd == NULL);
+		mti->deformVerts(md, depsgraph, ob, mesh, vertexCos, numVerts, flag);
 	}
 }
 
@@ -1028,14 +1029,15 @@ void modifier_deformVertsEM_DM_deprecated(struct ModifierData *md, struct Depsgr
 		mti->deformVertsEM_DM(md, depsgraph, ob, editData, dm, vertexCos, numVerts);
 	}
 	else {
-		struct Mesh mesh;
-		BKE_mesh_init(&mesh);
-
-		DM_to_mesh(dm, &mesh, ob, CD_MASK_EVERYTHING, false);
+		struct Mesh *mesh = ob->data;
+		BLI_assert(BLI_findindex(&G.main->mesh, mesh) == -1); /* This should be a CoW mesh */
 
-		mti->deformVertsEM(md, depsgraph, ob, editData, &mesh, vertexCos, numVerts);
+		if (dm != NULL) {
+			DM_to_mesh(dm, mesh, ob, CD_MASK_EVERYTHING, false);
+		}
 
-		BKE_mesh_free(&mesh);
+		BLI_assert(mesh->emd == NULL);
+		mti->deformVertsEM(md, depsgraph, ob, editData, mesh, vertexCos, numVerts);
 	}
 }



More information about the Bf-blender-cvs mailing list