Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-05-05 23:47:21 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-05-05 23:47:21 +0300
commit5e72ea439728de488a581b8006060b85b7c2ab20 (patch)
treed8077f55f00b2cc1650c3c600c41e024a6cb5526 /source/blender/editors/transform/transform_snap.c
parentd12378da11f65187fab5e98d4c5ade568c781412 (diff)
Don't overwrite existing snap context
Re-activating transform would overwrite previous context, leaking memory.
Diffstat (limited to 'source/blender/editors/transform/transform_snap.c')
-rw-r--r--source/blender/editors/transform/transform_snap.c22
1 files changed, 12 insertions, 10 deletions
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)));
+ }
}
}
}