From a1a7317f6b098ab6928f33754e57de219877cb64 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 19 Feb 2015 00:00:23 +0500 Subject: Add argument to DM_to_mesh() function to take ownership over the DM The idea is pretty simple: instead of making temporary copy of all the related custom data layers just pass the ownership from the DM to the mesh. This is really handy in cases when you've got DM which you need to convert to Mesh datablock and wouldn't need that DM after conversion anyway. Foe example, render database conversion, exporters and even Modifier Apply will benefit from this option. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D1127 --- source/blender/editors/object/object_add.c | 3 +-- source/blender/editors/object/object_modifier.c | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index db7cd991338..99b351561c7 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1700,11 +1700,10 @@ static int convert_exec(bContext *C, wmOperator *op) dm = mesh_get_derived_final(scene, newob, CD_MASK_MESH); // dm = mesh_create_derived_no_deform(ob1, NULL); /* this was called original (instead of get_derived). man o man why! (ton) */ - DM_to_mesh(dm, newob->data, newob, CD_MASK_MESH); + DM_to_mesh(dm, newob->data, newob, CD_MASK_MESH, true); /* re-tessellation is called by DM_to_mesh */ - dm->release(dm); BKE_object_free_modifiers(newob); /* after derivedmesh calls! */ } else if (ob->type == OB_FONT) { diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index bed85444101..710cf2dbdd2 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -614,9 +614,7 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, return 0; } - DM_to_mesh(dm, me, ob, CD_MASK_MESH); - - dm->release(dm); + DM_to_mesh(dm, me, ob, CD_MASK_MESH, true); if (md->type == eModifierType_Multires) multires_customdata_delete(me); -- cgit v1.2.3