|
@@ -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);
|