mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-03 06:30:24 +01:00
glXChooseVisual: Only consider fbconfig if we can get the corresponding visual.
This can fail, e.g. when XLIB_SKIP_ARGB_VISUALS=1 is set. See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=524794 and http://bugs.freedesktop.org/show_bug.cgi?id=21600 .
This commit is contained in:
parent
64f36ff9fb
commit
46b81b0cc8
1 changed files with 17 additions and 16 deletions
|
|
@ -1319,30 +1319,31 @@ PUBLIC XVisualInfo *glXChooseVisual(Display *dpy, int screen, int *attribList)
|
|||
** Eliminate visuals that don't meet minimum requirements
|
||||
** Compute a score for those that do
|
||||
** Remember which visual, if any, got the highest score
|
||||
** If no visual is acceptable, return None
|
||||
** Otherwise, create an XVisualInfo list with just the selected X visual
|
||||
** and return this.
|
||||
*/
|
||||
for ( modes = psc->visuals ; modes != NULL ; modes = modes->next ) {
|
||||
if ( fbconfigs_compatible( & test_config, modes )
|
||||
&& ((best_config == NULL)
|
||||
|| (fbconfig_compare( (const __GLcontextModes * const * const)&modes, &best_config ) < 0)) ) {
|
||||
best_config = modes;
|
||||
XVisualInfo visualTemplate;
|
||||
XVisualInfo *newList;
|
||||
int i;
|
||||
|
||||
visualTemplate.screen = screen;
|
||||
visualTemplate.visualid = modes->visualID;
|
||||
newList = XGetVisualInfo( dpy, VisualScreenMask|VisualIDMask,
|
||||
&visualTemplate, &i );
|
||||
|
||||
if (newList) {
|
||||
Xfree(visualList);
|
||||
visualList = newList;
|
||||
best_config = modes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** If no visual is acceptable, return None
|
||||
** Otherwise, create an XVisualInfo list with just the selected X visual
|
||||
** and return this.
|
||||
*/
|
||||
if (best_config != NULL) {
|
||||
XVisualInfo visualTemplate;
|
||||
int i;
|
||||
|
||||
visualTemplate.screen = screen;
|
||||
visualTemplate.visualid = best_config->visualID;
|
||||
visualList = XGetVisualInfo( dpy, VisualScreenMask|VisualIDMask,
|
||||
&visualTemplate, &i );
|
||||
}
|
||||
|
||||
return visualList;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue