From 08488e6d34462635f01e15179814450ba9c56397 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 20 Mar 2016 15:35:34 -0300 Subject: [PATCH] Mac: avoid calling CGSetLocalEventsSuppressionInterval, it was deprecated in OS X 10.6. --- src/video/cocoa/SDL_cocoamouse.m | 14 ++++++++------ src/video/cocoa/SDL_cocoamousetap.m | 3 +-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index c76833123350e..82bdc48b37221 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -226,13 +226,15 @@ + (NSCursor *)invisibleCursor Cocoa_HandleMouseWarp(point.x, point.y); - /* According to the docs, this was deprecated in 10.6, but it's still - * around. The substitute requires a CGEventSource, but I'm not entirely - * sure how we'd procure the right one for this event. - */ - CGSetLocalEventsSuppressionInterval(0.0); CGWarpMouseCursorPosition(point); - CGSetLocalEventsSuppressionInterval(0.25); + + /* CGWarpMouse causes a short delay by default, which is preventable by + * Calling this directly after. CGSetLocalEventsSuppressionInterval can also + * prevent it, but it's deprecated as of OS X 10.6. + */ + if (!mouse->relative_mode) { + CGAssociateMouseAndMouseCursorPosition(YES); + } /* CGWarpMouseCursorPosition doesn't generate a window event, unlike our * other implementations' APIs. Send what's appropriate. diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index ed70f3ca3448f..0f29daf759243 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -115,9 +115,8 @@ newLocation.y += (eventLocation.y - NSMaxY(windowRect) + 1); } - CGSetLocalEventsSuppressionInterval(0); CGWarpMouseCursorPosition(newLocation); - CGSetLocalEventsSuppressionInterval(0.25); + CGAssociateMouseAndMouseCursorPosition(YES); if ((CGEventMaskBit(type) & movementEventsMask) == 0) { /* For click events, we just constrain the event to the window, so