diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-05-03 16:42:55 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-05-04 15:02:58 +0300 |
commit | d8a03c77d796db4ae2546fbcbe230dbf4846b0ea (patch) | |
tree | df3426bdeb08321f7654bfe0ca5f814469c2d384 /source/blender/blenkernel | |
parent | 4880e2e75a860f4716e3122f5ae14f34f50a9452 (diff) |
Allocate/free meshes with generic library functions.
This avoids the need to use Mesh-specific functions, and makes allocation
and freeing easy oneliners.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_merge.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 43 |
3 files changed, 20 insertions, 34 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 2baa8c6edf4..3163ea6551e 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -47,6 +47,7 @@ #include "BLI_utildefines_stack.h" #include "BKE_animsys.h" +#include "BKE_idcode.h" #include "BKE_main.h" #include "BKE_DerivedMesh.h" #include "BKE_global.h" @@ -621,8 +622,7 @@ static Mesh *mesh_from_template_ex( { const bool do_tessface = ((me_src->totface != 0) && (me_src->totpoly == 0)); /* only do tessface if we have no polys */ - Mesh *me_dst = MEM_callocN(sizeof(struct Mesh), "Mesh"); - BKE_mesh_init(me_dst); + Mesh *me_dst = BKE_id_new_nomain(ID_ME, NULL); me_dst->mat = MEM_dupallocN(me_src->mat); me_dst->mselect = MEM_dupallocN(me_dst->mselect); @@ -703,8 +703,7 @@ BMesh *BKE_mesh_to_bmesh( Mesh *BKE_bmesh_to_mesh(BMesh *bm, const struct BMeshToMeshParams *params) { - Mesh *mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + Mesh *mesh = BKE_id_new_nomain(ID_ME, NULL); BM_mesh_bm_to_me(bm, mesh, params); return mesh; } diff --git a/source/blender/blenkernel/intern/mesh_merge.c b/source/blender/blenkernel/intern/mesh_merge.c index 78e470dda4e..899de970fdd 100644 --- a/source/blender/blenkernel/intern/mesh_merge.c +++ b/source/blender/blenkernel/intern/mesh_merge.c @@ -39,6 +39,7 @@ #include "BLI_ghash.h" #include "BKE_customdata.h" +#include "BKE_library.h" #include "BKE_mesh.h" #include "BKE_mesh_mapping.h" @@ -677,8 +678,7 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh, const int *vtargetmap, const int tot_vtar if (poly_map_mem != NULL) MEM_freeN(poly_map_mem); - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); return result; } diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 6722ed2aab1..5d2061f3bc6 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -60,6 +60,7 @@ #include "BKE_appdir.h" #include "BKE_cdderivedmesh.h" +#include "BKE_idcode.h" #include "BKE_key.h" #include "BKE_library.h" #include "BKE_library_query.h" @@ -1001,16 +1002,14 @@ void modifier_deformVerts_DM_deprecated(struct ModifierData *md, const ModifierE /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } mti->deformVerts(md, ctx, mesh, vertexCos, numVerts); if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } } } @@ -1029,16 +1028,14 @@ void modifier_deformMatrices_DM_deprecated(struct ModifierData *md, const Modifi /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } mti->deformMatrices(md, ctx, mesh, vertexCos, defMats, numVerts); if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } } } @@ -1056,16 +1053,14 @@ void modifier_deformVertsEM_DM_deprecated(struct ModifierData *md, const Modifie /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } mti->deformVertsEM(md, ctx, editData, mesh, vertexCos, numVerts); if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } } } @@ -1083,16 +1078,14 @@ void modifier_deformMatricesEM_DM_deprecated(struct ModifierData *md, const Modi /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } mti->deformMatricesEM(md, ctx, editData, mesh, vertexCos, defMats, numVerts); if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } } } @@ -1109,8 +1102,7 @@ struct DerivedMesh *modifier_applyModifier_DM_deprecated(struct ModifierData *md /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } @@ -1120,12 +1112,10 @@ struct DerivedMesh *modifier_applyModifier_DM_deprecated(struct ModifierData *md DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE); if(new_mesh != mesh) { - BKE_mesh_free(new_mesh); - MEM_freeN(new_mesh); + BKE_id_free(NULL, new_mesh); } if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } return ndm; @@ -1145,8 +1135,7 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(struct ModifierData * /* TODO(sybren): deduplicate all the copies of this code in this file. */ Mesh *mesh = NULL; if (dm != NULL) { - mesh = BKE_libblock_alloc_notest(ID_ME); - BKE_mesh_init(mesh); + mesh = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm, mesh, ctx->object, CD_MASK_EVERYTHING, false); } @@ -1156,12 +1145,10 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(struct ModifierData * DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE); if(new_mesh != mesh) { - BKE_mesh_free(new_mesh); - MEM_freeN(new_mesh); + BKE_id_free(NULL, new_mesh); } if (mesh != NULL) { - BKE_mesh_free(mesh); - MEM_freeN(mesh); + BKE_id_free(NULL, mesh); } return ndm; |