Unified video mode enumeration.

This commit is contained in:
Camilla Berglund 2014-09-22 19:25:05 +02:00
parent 4918514eaf
commit 468714cab9
2 changed files with 20 additions and 10 deletions

View File

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

View File

@ -352,13 +352,9 @@ GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found)
for (j = 0; j < *found; j++) for (j = 0; j < *found; j++)
{ {
if (result[j].width == mode.width && if (_glfwCompareVideoModes(result + j, &mode) == 0)
result[j].height == mode.height &&
result[j].refreshRate == mode.refreshRate)
{
break; break;
} }
}
if (j < *found) if (j < *found)
{ {