Merged logic fix from 2.7.1 trunk.
This commit is contained in:
parent
f93801c221
commit
fdcbb402a8
28
src/window.c
28
src/window.c
@ -256,18 +256,9 @@ const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
|
||||
unsigned int missing, leastMissing = UINT_MAX;
|
||||
unsigned int colorDiff, leastColorDiff = UINT_MAX;
|
||||
unsigned int extraDiff, leastExtraDiff = UINT_MAX;
|
||||
GLboolean desiresColor = GL_FALSE;
|
||||
const _GLFWfbconfig* current;
|
||||
const _GLFWfbconfig* closest = NULL;
|
||||
|
||||
// Cache some long-winded preferences
|
||||
|
||||
if (desired->redBits || desired->greenBits || desired->blueBits ||
|
||||
desired->alphaBits)
|
||||
{
|
||||
desiresColor = GL_TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
current = alternatives + i;
|
||||
@ -383,26 +374,17 @@ const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
|
||||
}
|
||||
|
||||
// Figure out if the current one is better than the best one found so far
|
||||
// Missing buffers is the most important heuristic, then color buffer size
|
||||
// mismatches and lastly size mismatches for other buffers
|
||||
|
||||
if (missing < leastMissing)
|
||||
closest = current;
|
||||
else if (missing == leastMissing)
|
||||
{
|
||||
if (desiresColor)
|
||||
if ((colorDiff < leastColorDiff) ||
|
||||
(colorDiff == leastColorDiff && extraDiff < leastExtraDiff))
|
||||
{
|
||||
if ((colorDiff < leastColorDiff) ||
|
||||
(colorDiff == leastColorDiff && extraDiff < leastExtraDiff))
|
||||
{
|
||||
closest = current;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((extraDiff < leastExtraDiff) ||
|
||||
(extraDiff == leastExtraDiff && colorDiff < leastColorDiff))
|
||||
{
|
||||
closest = current;
|
||||
}
|
||||
closest = current;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user