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>2019-11-26 12:56:08 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-26 12:58:26 +0300
commitfa1a946d4f3a5e8d010b7eee0a2d93e774fb0009 (patch)
tree055fe6e350c8ad6adc26957b984c281b2fa42208 /source/blender/windowmanager/intern/wm_gesture.c
parent1fbca076341919826bf70f7f1a11752223c75c85 (diff)
Fix memory leak, closing a window didn't free gestures
Exposed by test file in T71718
Diffstat (limited to 'source/blender/windowmanager/intern/wm_gesture.c')
-rw-r--r--source/blender/windowmanager/intern/wm_gesture.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c
index b79de4370d0..5943e947b41 100644
--- a/source/blender/windowmanager/intern/wm_gesture.c
+++ b/source/blender/windowmanager/intern/wm_gesture.c
@@ -97,10 +97,8 @@ wmGesture *WM_gesture_new(bContext *C, const wmEvent *event, int type)
return gesture;
}
-void WM_gesture_end(bContext *C, wmGesture *gesture)
+static void wm_gesture_end_with_window(wmWindow *win, wmGesture *gesture)
{
- wmWindow *win = CTX_wm_window(C);
-
if (win->tweak == gesture) {
win->tweak = NULL;
}
@@ -110,6 +108,18 @@ void WM_gesture_end(bContext *C, wmGesture *gesture)
MEM_freeN(gesture);
}
+void WM_gesture_end(bContext *C, wmGesture *gesture)
+{
+ wm_gesture_end_with_window(CTX_wm_window(C), gesture);
+}
+
+void WM_gestures_free_all(wmWindow *win)
+{
+ while (win->gesture.first) {
+ wm_gesture_end_with_window(win, win->gesture.first);
+ }
+}
+
void WM_gestures_remove(bContext *C)
{
wmWindow *win = CTX_wm_window(C);