From 5e72ea439728de488a581b8006060b85b7c2ab20 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 6 May 2016 06:47:21 +1000 Subject: Don't overwrite existing snap context Re-activating transform would overwrite previous context, leaking memory. --- source/blender/editors/transform/transform_snap.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'source/blender/editors/transform/transform_snap.c') diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 24b4b16e13f..d923bcb6629 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -569,16 +569,18 @@ static void initSnappingMode(TransInfo *t) if (t->flag & (T_OBJECT | T_EDIT)) { if (t->spacetype == SPACE_VIEW3D) { - t->tsnap.object_context = ED_transform_snap_object_context_create_view3d( - G.main, t->scene, SNAP_OBJECT_USE_CACHE, - t->ar, t->view); - - ED_transform_snap_object_context_set_editmesh_callbacks( - t->tsnap.object_context, - (bool (*)(BMVert *, void *))BM_elem_cb_check_hflag_disabled, - (bool (*)(BMEdge *, void *))BM_elem_cb_check_hflag_disabled, - (bool (*)(BMFace *, void *))BM_elem_cb_check_hflag_disabled, - SET_UINT_IN_POINTER((BM_ELEM_SELECT | BM_ELEM_HIDDEN))); + if (t->tsnap.object_context == NULL) { + t->tsnap.object_context = ED_transform_snap_object_context_create_view3d( + G.main, t->scene, SNAP_OBJECT_USE_CACHE, + t->ar, t->view); + + ED_transform_snap_object_context_set_editmesh_callbacks( + t->tsnap.object_context, + (bool (*)(BMVert *, void *))BM_elem_cb_check_hflag_disabled, + (bool (*)(BMEdge *, void *))BM_elem_cb_check_hflag_disabled, + (bool (*)(BMFace *, void *))BM_elem_cb_check_hflag_disabled, + SET_UINT_IN_POINTER((BM_ELEM_SELECT | BM_ELEM_HIDDEN))); + } } } } -- cgit v1.2.3