From 9ac1c60e5162293405baa5d3e19c7b8750e8e159 Mon Sep 17 00:00:00 2001 From: "J?rgen P. Tjern?" Date: Tue, 23 Apr 2013 18:47:38 -0700 Subject: [PATCH] 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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 5e9c599fe..56eaa5134 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -392,7 +392,14 @@ - (void)mouseMoved:(NSEvent *)theEvent 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);