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 7098 f4b2c6fb0258
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
--- a/src/video/cocoa/SDL_cocoawindow.m	Tue Apr 23 18:47:32 2013 -0700
+++ b/src/video/cocoa/SDL_cocoawindow.m	Tue Apr 23 18:47:38 2013 -0700
@@ -392,7 +392,14 @@
 
             cgpoint.x = window->x + x;
             cgpoint.y = window->y + y;
+
+            /* We have to disassociate the curosr & the mouse before issuing
+             * this cursor warp, otherwise it gets limited to one update per
+             * 250ms, and looks very choppy.
+             */
+            CGAssociateMouseAndMouseCursorPosition(NO);
             CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cgpoint);
+            CGAssociateMouseAndMouseCursorPosition(YES);
         }
     }
     SDL_SendMouseMotion(window, 0, 0, x, y);