File mesa-chromium-opcode-fix.diff of Package Mesa
commit 0452343805a528b28d3110911dccbcc8a9d6b619
Author: David Reveman <davidr@novell.com>
Date: Thu Apr 16 11:23:37 2009 -0400
Don't call __glXSetupForCommand.
diff --git a/src/glx/x11/dricr_glx.c b/src/glx/x11/dricr_glx.c
index 2d2f1df..94c0f4d 100644
--- a/src/glx/x11/dricr_glx.c
+++ b/src/glx/x11/dricr_glx.c
@@ -118,6 +118,7 @@ struct __GLXDRIdisplayPrivateRec
struct __GLXDRIscreenPrivateRec
{
__GLXDRIscreen base;
+ __GLXdisplayPrivate *pd;
struct __GLXDRIdisplayPrivateRec *pdp;
};
@@ -482,21 +483,16 @@ driDestroyContext (__GLXDRIcontext *context,
__GLXDRIscreenPrivate *psp = (__GLXDRIscreenPrivate *)
pcp->psc->driScreen;
xGLXDestroyContextReq *req;
- CARD8 opcode;
(*psp->pdp->spu->dispatch_table.DestroyContext) (pcp->spuContext);
- opcode = __glXSetupForCommand (dpy);
- if (opcode)
- {
- LockDisplay (dpy);
- GetReq (GLXDestroyContext, req);
- req->reqType = opcode;
- req->glxCode = X_GLXDestroyContext;
- req->context = pcp->xid;
- UnlockDisplay (dpy);
- SyncHandle ();
- }
+ LockDisplay (dpy);
+ GetReq (GLXDestroyContext, req);
+ req->reqType = psp->pd->majorOpcode;
+ req->glxCode = X_GLXDestroyContext;
+ req->context = pcp->xid;
+ UnlockDisplay (dpy);
+ SyncHandle ();
if (currentGC && currentGC->driContext == context)
_glapi_set_dispatch (NULL);
@@ -543,7 +539,6 @@ driCreateContext (__GLXscreenConfigs *psc,
GLint spuShareContext = 0;
xGLXCreateContextReq *req;
Display *dpy;
- CARD8 opcode;
GLuint value[2];
if (!psc || !psp)
@@ -576,17 +571,9 @@ driCreateContext (__GLXscreenConfigs *psc,
return NULL;
}
- opcode = __glXSetupForCommand (dpy);
- if (!opcode)
- {
- (*psp->pdp->spu->dispatch_table.DestroyContext) (pcp->spuContext);
- Xfree (pcp);
- return NULL;
- }
-
LockDisplay (dpy);
GetReq (GLXCreateContext, req);
- req->reqType = opcode;
+ req->reqType = gc->majorOpcode;
req->glxCode = X_GLXCreateContext;
req->context = pcp->xid = XAllocID (dpy);
req->visual = mode->visualID;
@@ -618,23 +605,16 @@ driDestroyDrawable (__GLXDRIdrawable *pdraw)
pdraw->psc->driScreen;
xGLXDestroyPbufferReq *req;
Display *dpy = pdraw->psc->dpy;
- CARD8 opcode;
(*psp->pdp->spu->dispatch_table.WindowDestroy) (pdp->spuDrawable);
- opcode = __glXSetupForCommand (dpy);
- if (opcode)
- {
- LockDisplay (dpy);
-
- GetReqExtra(GLXDestroyPbuffer, 4, req);
- req->reqType = opcode;
- req->glxCode = X_GLXDestroyWindow;
- req->pbuffer = (GLXPbuffer) pdp->xid;
-
- UnlockDisplay (dpy);
- SyncHandle ();
- }
+ LockDisplay (dpy);
+ GetReqExtra(GLXDestroyPbuffer, 4, req);
+ req->reqType = psp->pd->majorOpcode;
+ req->glxCode = X_GLXDestroyWindow;
+ req->pbuffer = (GLXPbuffer) pdp->xid;
+ UnlockDisplay (dpy);
+ SyncHandle ();
Xfree (pdp);
}
@@ -649,15 +629,13 @@ driCreateDrawable (__GLXscreenConfigs *psc,
__GLXDRIscreenPrivate *psp = (__GLXDRIscreenPrivate *) psc->driScreen;
xGLXCreateWindowReq *req;
Display *dpy = psc->dpy;
- CARD8 opcode;
GLuint value[2];
if (mode->fbconfigID == GLX_DONT_CARE)
{
- __GLXdisplayPrivate *priv = __glXInitialize (dpy);
- __GLcontextModes *modes;
+ __GLcontextModes *modes;
- for (modes = priv->screenConfigs[mode->screen].configs;
+ for (modes = psp->pd->screenConfigs[mode->screen].configs;
modes != NULL;
modes = modes->next)
if (modes->fbconfigID != GLX_DONT_CARE &&
@@ -695,17 +673,9 @@ driCreateDrawable (__GLXscreenConfigs *psc,
return NULL;
}
- opcode = __glXSetupForCommand (dpy);
- if (!opcode)
- {
- (*psp->pdp->spu->dispatch_table.WindowDestroy) (pdp->spuDrawable);
- Xfree (pdp);
- return None;
- }
-
LockDisplay (dpy);
GetReq (GLXCreateWindow, req);
- req->reqType = opcode;
+ req->reqType = psp->pd->majorOpcode;
req->glxCode = X_GLXCreateWindow;
req->screen = (CARD32) mode->screen;
req->fbconfig = mode->fbconfigID;
@@ -764,6 +734,7 @@ driCreateScreen (__GLXscreenConfigs *psc,
psp->base.createDrawable = driCreateDrawable;
psp->base.swapBuffers = driSwapBuffers;
+ psp->pd = pd;
psp->pdp = pdp;
return &psp->base;