Mesa (master): glx: Avoid calling __glXInitialize() in driReleaseDrawables( ).

Henri Verbeet hverbeet at kemper.freedesktop.org
Tue Jul 19 21:28:26 UTC 2011


Module: Mesa
Branch: master
Commit: 0f20e2e18f902b4319851643e1775a18c2aacb3d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f20e2e18f902b4319851643e1775a18c2aacb3d

Author: Henri Verbeet <hverbeet at gmail.com>
Date:   Mon Jul 18 00:42:27 2011 +0200

glx: Avoid calling __glXInitialize() in driReleaseDrawables().

This fixes a regression introduced by commit
a26121f37530619610a78a5fbe5ef87e44047fda (fd.o bug #39219).

Since the __glXInitialize() call should be unnecessary anyway, this is
probably a nicer fix for the original problem too.

NOTE: This is a candidate for the 7.10 and 7.11 branches.

Signed-off-by: Henri Verbeet <hverbeet at gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Tested-by: padfoot at exemail.com.au

---

 src/glx/dri_common.c |    2 +-
 src/glx/glxext.c     |   11 +++--------
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index bac0c9e..e7dba5a 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -388,7 +388,7 @@ driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable)
 _X_HIDDEN void
 driReleaseDrawables(struct glx_context *gc)
 {
-   struct glx_display *const priv = __glXInitialize(gc->psc->dpy);
+   const struct glx_display *priv = gc->psc->display;
    __GLXDRIdrawable *pdraw;
 
    if (priv == NULL)
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 8704c48..8254544 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;
 }




More information about the mesa-commit mailing list