|
|
|
@ -326,7 +326,7 @@ void _glfwPlatformGetMonitorPos(_GLFWmonitor* monitor, int* xpos, int* ypos) |
|
|
|
|
GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found) |
|
|
|
|
{ |
|
|
|
|
CFArrayRef modes; |
|
|
|
|
CFIndex count, i; |
|
|
|
|
CFIndex count, i, j; |
|
|
|
|
GLFWvidmode* result; |
|
|
|
|
CVDisplayLinkRef link; |
|
|
|
|
|
|
|
|
@ -340,12 +340,26 @@ GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found) |
|
|
|
|
|
|
|
|
|
for (i = 0; i < count; i++) |
|
|
|
|
{ |
|
|
|
|
CGDisplayModeRef mode = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); |
|
|
|
|
if (modeIsGood(mode)) |
|
|
|
|
CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); |
|
|
|
|
if (!modeIsGood(dm)) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
const GLFWvidmode mode = vidmodeFromCGDisplayMode(dm, link); |
|
|
|
|
|
|
|
|
|
for (j = 0; j < *found; j++) |
|
|
|
|
{ |
|
|
|
|
result[*found] = vidmodeFromCGDisplayMode(mode, link); |
|
|
|
|
(*found)++; |
|
|
|
|
if (_glfwCompareVideoModes(result + j, &mode) == 0) |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (i < *found) |
|
|
|
|
{ |
|
|
|
|
// This is a duplicate, so skip it |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
result[*found] = mode; |
|
|
|
|
(*found)++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
CFRelease(modes); |
|
|
|
|