diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-29 05:41:56 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-29 05:41:56 +0400 |
commit | 42076f0a1f46d165cf0eae364a3e3ebb3f870edc (patch) | |
tree | af89c62c31339c37c21bf8d759a3551bc52e8e2f /source/blender/editors/mesh/editmesh_utils.c | |
parent | a308b6c0ec070ac3813849c670b077641e9071a2 (diff) |
skip using bmesh operators for converting to/from undo meshes (gives some speedup)
Diffstat (limited to 'source/blender/editors/mesh/editmesh_utils.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_utils.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c index e5a9cb98377..b9a75729a8a 100644 --- a/source/blender/editors/mesh/editmesh_utils.c +++ b/source/blender/editors/mesh/editmesh_utils.c @@ -301,12 +301,12 @@ void EDBM_mesh_make(ToolSettings *ts, Scene *UNUSED(scene), Object *ob) me->edit_btmesh->ob = ob; } -void EDBM_mesh_load(Scene *scene, Object *ob) +void EDBM_mesh_load(Object *ob) { Mesh *me = ob->data; BMesh *bm = me->edit_btmesh->bm; - BMO_op_callf(bm, "object_load_bmesh scene=%p object=%p", scene, ob); + BM_mesh_bm_to_me(bm, me, FALSE); #ifdef USE_TESSFACE_DEFAULT BKE_mesh_tessface_calc(me); @@ -552,7 +552,11 @@ static void undoMesh_to_editbtMesh(void *umv, void *em_v, void *UNUSED(obdata)) BMEdit_Free(em); bm = BM_mesh_create(&bm_mesh_allocsize_default); - BMO_op_callf(bm, "mesh_to_bmesh mesh=%p object=%p set_shapekey=%b", &um->me, ob, FALSE); + + BM_mesh_bm_from_me(bm, &um->me, FALSE, ob->shapenr); + + /* face normals need recalculation since we are not calling through an operator */ + BM_mesh_normals_update(bm, TRUE); em_tmp = BMEdit_Create(bm, TRUE); *em = *em_tmp; @@ -563,16 +567,16 @@ static void undoMesh_to_editbtMesh(void *umv, void *em_v, void *UNUSED(obdata)) MEM_freeN(em_tmp); } - -static void free_undo(void *umv) +static void free_undo(void *me_v) { - if (((Mesh *)umv)->key) { - free_key(((Mesh *)umv)->key); - MEM_freeN(((Mesh *)umv)->key); + Mesh *me = me_v; + if (me->key) { + free_key(me->key); + MEM_freeN(me->key); } - - free_mesh(umv, 0); - MEM_freeN(umv); + + free_mesh(me, FALSE); + MEM_freeN(me); } /* and this is all the undo system needs to know */ |