[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