From 8e66c3d7552bf33163bb8ac2a6d3963bad1b0eb4 Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Mon, 5 Nov 2007 17:02:03 -0500 Subject: Lookup visual in visual list, not fbconfig list. Also, handle visual not found error case by throwing X error. --- src/glx/x11/glxcmds.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c index 37bfc2a67c..cbc566e917 100644 --- a/src/glx/x11/glxcmds.c +++ b/src/glx/x11/glxcmds.c @@ -379,17 +379,21 @@ CreateContext(Display *dpy, XVisualInfo *vis, const __GLcontextModes * mode; drm_context_t hwContext; - /* The value of fbconfig cannot change because it is tested - * later in the function. - */ - if ( fbconfig == NULL ) { - /* FIXME: Is it possible for the __GLcontextModes structure - * FIXME: to not be found? - */ - mode = _gl_context_modes_find_visual( psc->configs, - vis->visualid ); - assert( mode != NULL ); - assert( mode->screen == screen ); + + if (fbconfig == NULL) { + mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid); + if (mode == NULL) { + xError error; + + error.errorCode = BadValue; + error.resourceID = vis->visualid; + error.sequenceNumber = dpy->request; + error.type = X_Error; + error.majorCode = gc->majorOpcode; + error.minorCode = X_GLXCreateContext; + _XError(dpy, &error); + return None; + } } else { mode = fbconfig; -- cgit v1.2.3