Browse Source

Fix duplicate raw mouse events with XInput2

Make XGrabPointer calls in X11_SetWindowGrab and X11_CaptureMouse
consistent by passing False to owner_mask along with proper event_mask.
Victor Luchits 10 years ago
parent
commit
afc97cbd5d
1 changed files with 5 additions and 2 deletions
  1. 5 2
      src/video/x11/SDL_x11window.c

+ 5 - 2
src/video/x11/SDL_x11window.c

@@ -1329,9 +1329,12 @@ X11_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
     if (oldstyle_fullscreen || grabbed) {
     if (oldstyle_fullscreen || grabbed) {
         /* Try to grab the mouse */
         /* Try to grab the mouse */
         for (;;) {
         for (;;) {
+            const unsigned int mask = ButtonPressMask | ButtonReleaseMask 
+                | PointerMotionMask | FocusChangeMask;
             int result =
             int result =
-                X11_XGrabPointer(display, data->xwindow, True, 0, GrabModeAsync,
-                             GrabModeAsync, data->xwindow, None, CurrentTime);
+                X11_XGrabPointer(display, data->xwindow, False, mask, 
+                             GrabModeAsync, GrabModeAsync, data->xwindow, 
+                             None, CurrentTime);
             if (result == GrabSuccess) {
             if (result == GrabSuccess) {
                 break;
                 break;
             }
             }