diff --git a/readme.html b/readme.html index 5f3af632..bde16bcf 100644 --- a/readme.html +++ b/readme.html @@ -312,7 +312,7 @@ version of GLFW.

  • [Cocoa] Added support for joysticks
  • [Cocoa] Postponed menu creation to first window creation
  • [Cocoa] Replaced NSDate time source with mach_absolute_time
  • -
  • [Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration and setting
  • +
  • [Cocoa] Replaced all deprecated CoreGraphics calls with non-deprecated counterparts
  • [Cocoa] Bugfix: glfwOpenWindow did not properly enforce the forward-compatible and context profile hints
  • [Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
  • [Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
  • diff --git a/src/cocoa_init.m b/src/cocoa_init.m index 89260c56..00898778 100644 --- a/src/cocoa_init.m +++ b/src/cocoa_init.m @@ -102,6 +102,13 @@ int _glfwPlatformInit(void) _glfwInitJoysticks(); + _glfwLibrary.NS.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState); + if (!_glfwLibrary.NS.eventSource) + return GL_FALSE; + + CGEventSourceSetLocalEventsSuppressionInterval(_glfwLibrary.NS.eventSource, + 0.0); + return GL_TRUE; } @@ -113,6 +120,12 @@ int _glfwPlatformTerminate(void) { // TODO: Probably other cleanup + if (_glfwLibrary.NS.eventSource) + { + CFRelease(_glfwLibrary.NS.eventSource); + _glfwLibrary.NS.eventSource = NULL; + } + // Restore the original gamma ramp _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h index a06c13a0..b70fb184 100644 --- a/src/cocoa_platform.h +++ b/src/cocoa_platform.h @@ -93,6 +93,7 @@ typedef struct _GLFWlibraryNS // dlopen handle for dynamically loading OpenGL extension entry points void* OpenGLFramework; CGDisplayModeRef desktopMode; + CGEventSourceRef eventSource; id delegate; id autoreleasePool; } _GLFWlibraryNS; diff --git a/src/cocoa_window.m b/src/cocoa_window.m index c1d710c0..9d5ee5ec 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -1108,11 +1108,6 @@ void _glfwPlatformSetMouseCursorPos(_GLFWwindow* window, int x, int y) // calculating the maximum y coordinate of all screens, since Cocoa's // "global coordinates" are upside down from CG's... - // Without this (once per app run, but it's convenient to do it here) - // events will be suppressed for a default of 0.25 seconds after we - // move the cursor. - CGSetLocalEventsSuppressionInterval(0.0); - NSPoint localPoint = NSMakePoint(x, y); NSPoint globalPoint = [window->NS.window convertBaseToScreen:localPoint]; CGPoint mainScreenOrigin = CGDisplayBounds(CGMainDisplayID()).origin;