summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-07-19 21:00:09 -0400
committerKristian Høgsberg <krh@bitplanet.net>2010-07-19 22:45:51 -0400
commit037755122e9011c768e5caa4d4cb83aba783d3e9 (patch)
tree9191eec52cd546d61391fee90a2d6035c0720366
parent8d0228912bfef173139296a96a097f1a6348c963 (diff)
glx: Don't use __glXInitialize() when we might be holding __glXLock()
-rw-r--r--src/glx/dri2_glx.c7
-rw-r--r--src/glx/glxclient.h2
-rw-r--r--src/glx/glxext.c1
3 files changed, 5 insertions, 5 deletions
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 032d620a343..6ac03cf0cfb 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -186,11 +186,8 @@ dri2DestroyDrawable(__GLXDRIdrawable *base)
{
struct dri2_screen *psc = (struct dri2_screen *) base->psc;
struct dri2_drawable *pdraw = (struct dri2_drawable *) base;
- __GLXdisplayPrivate *dpyPriv;
- struct dri2_display *pdp;
-
- dpyPriv = __glXInitialize(base->psc->dpy);
- pdp = (struct dri2_display *)dpyPriv->dri2Display;
+ __GLXdisplayPrivate *dpyPriv = psc->base.display;
+ struct dri2_display *pdp = (struct dri2_display *)dpyPriv->dri2Display;
__glxHashDelete(pdp->dri2Hash, pdraw->base.xDrawable);
(*psc->core->destroyDrawable) (pdraw->driDrawable);
diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index 65dc26b3fcc..207908f7e25 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -523,6 +523,8 @@ struct __GLXscreenConfigsRec
*/
const struct glx_context_vtable *direct_context_vtable;
+ __GLXdisplayPrivate *display;
+
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/**
* Per screen direct rendering interface functions and data.
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 320246cc4f2..445592f1a8a 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -759,6 +759,7 @@ glx_screen_init(__GLXscreenConfigs *psc,
psc->scr = screen;
psc->dpy = priv->dpy;
psc->drawHash = __glxHashCreate();
+ psc->display = priv;
if (psc->drawHash == NULL)
return GL_FALSE;