Mac: Make mouse movement smooth at edge of window when grabbed.
authorJørgen P. Tjernø <jorgen@valvesoftware.com>
Tue, 23 Apr 2013 18:47:38 -0700
changeset 7098f4b2c6fb0258
parent 7097 84bbd421d62f
child 7099 54f187c036e2
Mac: Make mouse movement smooth at edge of window when grabbed.

There's a limit of one update every 250ms when warping the mouse, and we
can work around that by disassociating the cursor & the mouse before
issuing our warp, then re-associating them.
src/video/cocoa/SDL_cocoawindow.m
     1.1 --- a/src/video/cocoa/SDL_cocoawindow.m	Tue Apr 23 18:47:32 2013 -0700
     1.2 +++ b/src/video/cocoa/SDL_cocoawindow.m	Tue Apr 23 18:47:38 2013 -0700
     1.3 @@ -392,7 +392,14 @@
     1.4  
     1.5              cgpoint.x = window->x + x;
     1.6              cgpoint.y = window->y + y;
     1.7 +
     1.8 +            /* We have to disassociate the curosr & the mouse before issuing
     1.9 +             * this cursor warp, otherwise it gets limited to one update per
    1.10 +             * 250ms, and looks very choppy.
    1.11 +             */
    1.12 +            CGAssociateMouseAndMouseCursorPosition(NO);
    1.13              CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cgpoint);
    1.14 +            CGAssociateMouseAndMouseCursorPosition(YES);
    1.15          }
    1.16      }
    1.17      SDL_SendMouseMotion(window, 0, 0, x, y);