diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 8a9a1d3b0..d9d22019b 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -308,16 +308,14 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId, glxc->drawPriv = NULL; glxc->readPriv = NULL; - /* Register this context as a resource. + /* Add the new context to the various global tables of GLX contexts. */ - if (!AddResource(gcId, __glXContextRes, (pointer)glxc)) { + if (!__glXAddContext(glxc)) { (*glxc->destroy) (glxc); client->errorValue = gcId; return BadAlloc; } - __glXAddToContextList(glxc); - return Success; } diff --git a/glx/glxext.c b/glx/glxext.c index 599f02931..8d168d8a3 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -157,11 +157,18 @@ DrawableGone(__GLXdrawable * glxPriv, XID xid) return True; } -void -__glXAddToContextList(__GLXcontext * cx) +Bool +__glXAddContext(__GLXcontext * cx) { + /* Register this context as a resource. + */ + if (!AddResource(cx->id, __glXContextRes, (pointer)cx)) { + return False; + } + cx->next = glxAllContexts; glxAllContexts = cx; + return True; } static void diff --git a/glx/glxext.h b/glx/glxext.h index 7cd5cb49f..9b0978b93 100644 --- a/glx/glxext.h +++ b/glx/glxext.h @@ -38,7 +38,7 @@ extern GLboolean __glXFreeContext(__GLXcontext * glxc); extern void __glXFlushContextCache(void); -extern void __glXAddToContextList(__GLXcontext * cx); +extern Bool __glXAddContext(__GLXcontext * cx); extern void __glXErrorCallBack(GLenum code); extern void __glXClearErrorOccured(void); extern GLboolean __glXErrorOccured(void);