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

View File

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