summaryrefslogtreecommitdiffstats
path: root/src/glx/glxext.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx/glxext.c')
-rw-r--r--src/glx/glxext.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 8704c484f96..8254544d1c0 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -260,24 +260,19 @@ glx_display_free(struct glx_display *priv)
static int
__glXCloseDisplay(Display * dpy, XExtCodes * codes)
{
- struct glx_display *priv, **prev, *next;
+ struct glx_display *priv, **prev;
_XLockMutex(_Xglobal_lock);
prev = &glx_displays;
for (priv = glx_displays; priv; prev = &priv->next, priv = priv->next) {
if (priv->dpy == dpy) {
+ *prev = priv->next;
break;
}
}
+ _XUnlockMutex(_Xglobal_lock);
- /* Only remove the display from the list after it's destroyed. The cleanup
- * code (e.g. driReleaseDrawables()) ends up calling __glXInitialize(),
- * which would create a new glx_display while we're trying to destroy this
- * one. */
- next = priv->next;
glx_display_free(priv);
- *prev = next;
- _XUnlockMutex(_Xglobal_lock);
return 1;
}