mirror of
https://github.com/glfw/glfw.git
synced 2026-09-17 22:32:50 +00:00
Fix monitor disappearing on OS X with AGS
When automatic graphics switching is activated, the CGDirectDisplayID for the display changes, casuing the primary GLFWmonitor to disappear.
This commit is contained in:
+5
-2
@@ -268,7 +268,8 @@ _GLFWmonitor** _glfwPlatformGetMonitors(int* count)
|
||||
char* name = getDisplayName(displays[i]);
|
||||
|
||||
monitor = _glfwAllocMonitor(name, size.width, size.height);
|
||||
monitor->ns.displayID = displays[i];
|
||||
monitor->ns.displayID = displays[i];
|
||||
monitor->ns.unitNumber = CGDisplayUnitNumber(displays[i]);
|
||||
|
||||
free(name);
|
||||
|
||||
@@ -284,7 +285,9 @@ _GLFWmonitor** _glfwPlatformGetMonitors(int* count)
|
||||
|
||||
GLboolean _glfwPlatformIsSameMonitor(_GLFWmonitor* first, _GLFWmonitor* second)
|
||||
{
|
||||
return first->ns.displayID == second->ns.displayID;
|
||||
// HACK: Compare unit numbers instead of display IDs to work around display
|
||||
// replacement on machines with automatic graphics switching
|
||||
return first->ns.unitNumber == second->ns.unitNumber;
|
||||
}
|
||||
|
||||
void _glfwPlatformGetMonitorPos(_GLFWmonitor* monitor, int* xpos, int* ypos)
|
||||
|
||||
@@ -90,6 +90,7 @@ typedef struct _GLFWmonitorNS
|
||||
{
|
||||
CGDirectDisplayID displayID;
|
||||
CGDisplayModeRef previousMode;
|
||||
uint32_t unitNumber;
|
||||
|
||||
} _GLFWmonitorNS;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user