Browse Source

Hooked up Quartz reconfiguration callback.

Camilla Berglund 12 years ago
parent
commit
8a683c02aa
1 changed files with 15 additions and 0 deletions
  1. 15 0
      src/cocoa_init.m

+ 15 - 0
src/cocoa_init.m

@@ -71,6 +71,13 @@ static void changeToResourcesDirectory(void)
 
 #endif /* _GLFW_USE_CHDIR */
 
+static void reconfigurationCallback(CGDirectDisplayID displayID,
+                                    CGDisplayChangeSummaryFlags flags,
+                                    void* data)
+{
+    _glfwInputMonitorChange();
+}
+
 
 //////////////////////////////////////////////////////////////////////////
 //////                       GLFW platform API                      //////
@@ -95,6 +102,12 @@ int _glfwPlatformInit(void)
     if (!_glfw.ns.eventSource)
         return GL_FALSE;
 
+    if (CGDisplayRegisterReconfigurationCallback(reconfigurationCallback,
+                                                 NULL) != kCGErrorSuccess)
+    {
+        return GL_FALSE;
+    }
+
     CGEventSourceSetLocalEventsSuppressionInterval(_glfw.ns.eventSource, 0.0);
 
     return GL_TRUE;
@@ -102,6 +115,8 @@ int _glfwPlatformInit(void)
 
 void _glfwPlatformTerminate(void)
 {
+    CGDisplayRemoveReconfigurationCallback(reconfigurationCallback, NULL);
+
     if (_glfw.ns.eventSource)
     {
         CFRelease(_glfw.ns.eventSource);