From 0c8b41e464997a1438ef068e01e9119c1b941a7c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 18 Nov 2009 21:01:04 +0000 Subject: Fix crash on Windows when clicking anywhere in a window. Cursor grabbing code was missing checks for invalid tablet data. --- source/blender/windowmanager/intern/wm_cursors.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'source/blender/windowmanager/intern/wm_cursors.c') diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index 9a8c3db0987..6145871f9d4 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -173,16 +173,22 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) if(hide) mode = GHOST_kGrabHide; else if(wrap) mode = GHOST_kGrabWrap; - if ((G.f & G_DEBUG) == 0) - if(win && (GHOST_GetTabletData(win->ghostwin)->Active == GHOST_kTabletModeNone)) - GHOST_SetCursorGrab(win->ghostwin, mode, bounds); + if ((G.f & G_DEBUG) == 0) { + if (win && win->ghostwin) { + const GHOST_TabletData *tabletdata= GHOST_GetTabletData(win->ghostwin); + + if ((tabletdata) && (tabletdata->Active == GHOST_kTabletModeNone)) + GHOST_SetCursorGrab(win->ghostwin, mode, bounds); + } + } } void WM_cursor_ungrab(wmWindow *win) { - if ((G.f & G_DEBUG) == 0) + if ((G.f & G_DEBUG) == 0) { if(win && win->ghostwin) GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL); + } } /* afer this you can call restore too */ -- cgit v1.2.3