Mesa (7.8-gles): glx: Get GLX_SCREEN first in __glXQueryContextInfo()
Kristian Høgsberg
krh at kemper.freedesktop.org
Wed May 12 20:13:19 UTC 2010
Module: Mesa
Branch: 7.8-gles
Commit: 8b68c0aa24da7723c359e6a8a352f6e8fb584b5b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b68c0aa24da7723c359e6a8a352f6e8fb584b5b
Author: Kristian Høgsberg <krh at bitplanet.net>
Date: Fri May 7 18:38:35 2010 -0400
glx: Get GLX_SCREEN first in __glXQueryContextInfo()
And lookup the GLX screen for the context. Otherwise we'll end up
jumping through a NULL-pointer once we try to look up the visual
or config for the shared context.
https://bugs.freedesktop.org/show_bug.cgi?id=14245
---
src/glx/glxcmds.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 9e4e194..90fc59a 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -1766,6 +1766,15 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
unsigned i;
_XRead(dpy, (char *) propList, nPropListBytes);
+
+ /* Look up screen first so we can look up visuals/fbconfigs later */
+ pProp = propList;
+ for (i = 0; i < numValues; i++, pProp += 2)
+ if (pProp[0] == GLX_SCREEN) {
+ ctx->screen = pProp[1];
+ ctx->psc = GetGLXScreenConfigs(dpy, ctx->screen);
+ }
+
pProp = propList;
for (i = 0; i < numValues; i++) {
switch (*pProp++) {
@@ -1776,9 +1785,6 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
ctx->mode =
_gl_context_modes_find_visual(ctx->psc->visuals, *pProp++);
break;
- case GLX_SCREEN:
- ctx->screen = *pProp++;
- break;
case GLX_FBCONFIG_ID:
ctx->mode =
_gl_context_modes_find_fbconfig(ctx->psc->configs,
@@ -1787,6 +1793,7 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
case GLX_RENDER_TYPE:
ctx->renderType = *pProp++;
break;
+ case GLX_SCREEN:
default:
pProp++;
continue;
More information about the mesa-commit
mailing list