summaryrefslogtreecommitdiffstats
path: root/src/glx
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-07-14 15:24:14 +0100
committerAdam Jackson <ajax@redhat.com>2018-07-31 13:56:13 -0400
commitfaa29c0e2449e3d7521bc273d723012b537593df (patch)
tree5049a3f1f0c84ccb854cb789767336db3a1ab9b9 /src/glx
parent03a61b977e1f6adb64658aa059ce53e766ff9ad9 (diff)
Make glXChooseFBConfig handle unspecified sRGB correctly
Make glXChooseFBConfig properly handle the case where the only matching configs have the sRGB flag set, but no sRGB attribute is specified. Since 6e06e281, the sRGBcapable flag is now actually compared, using MATCH_DONT_CARE. 7b0f912e added defaulting of sRGBcapable to GL_FALSE in __glXInitializeVisualConfigFromTags(), to handle servers which don't report it, but this function is also used by glXChooseFBConfig(), so sRGBcapable is implicitly false when not explicitly specified. (This can cause e.g. glxinfo to fail to find anything matching the simple config it looks for if all the candidates have the sRGB flag set to true. I'm assuming this doesn't happen 'normally' as candidate configs with and without sRGB true are available) Move this defaulting to createConfigsFromProperties(), and set the default for glXChooseFBConfig() in init_fbconfig_for_chooser() to GLX_DONT_CARE. Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/glxcmds.c1
-rw-r--r--src/glx/glxext.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index e8485acd809..4db0228eaba 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -937,6 +937,7 @@ init_fbconfig_for_chooser(struct glx_config * config,
config->fbconfigID = (GLXFBConfigID) (GLX_DONT_CARE);
config->swapMethod = GLX_DONT_CARE;
+ config->sRGBCapable = GLX_DONT_CARE;
}
#define MATCH_DONT_CARE( param ) \
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 5f23d3717a4..ca3bf9d027f 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -402,8 +402,6 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count,
#endif
}
- config->sRGBCapable = GL_FALSE;
-
/*
** Additional properties may be in a list at the end
** of the reply. They are in pairs of property type
@@ -660,6 +658,8 @@ createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
*/
m->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
#endif
+ /* Older X servers don't send this so we default it here. */
+ m->sRGBCapable = GL_FALSE;
__glXInitializeVisualConfigFromTags(m, nprops, props,
tagged_only, GL_TRUE);
m->screen = screen;