Mesa (master): glx: Destroy the old context only after the new one has been bound

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Mon Jun 20 23:56:05 UTC 2011


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

Author: Jeremy Huddleston <jeremyhu at apple.com>
Date:   Fri Jun 17 12:28:05 2011 -0700

glx: Destroy the old context only after the new one has been bound

This fixes a regression introduced by 49d7e48b33264d94e30af6129c281b6acafa9427

Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>

---

 src/glx/glxcurrent.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
index 9eb7d5a..0f39ee5 100644
--- a/src/glx/glxcurrent.c
+++ b/src/glx/glxcurrent.c
@@ -255,13 +255,6 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
       if (--oldGC->thread_refcount == 0) {
 	 oldGC->vtable->unbind(oldGC, gc);
 	 oldGC->currentDpy = 0;
-
-	 if (oldGC->xid == None && oldGC != gc) {
-	    /* We are switching away from a context that was
-	     * previously destroyed, so we need to free the memory
-	     * for the old handle. */
-	    oldGC->vtable->destroy(oldGC);
-	 }
       }
    }
 
@@ -279,6 +272,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
       __glXSetCurrentContextNull();
    }
 
+   if (oldGC->thread_refcount == 0 && oldGC != &dummyContext && oldGC->xid == None) {
+      /* We are switching away from a context that was
+       * previously destroyed, so we need to free the memory
+       * for the old handle. */
+      oldGC->vtable->destroy(oldGC);
+   }
+
    __glXUnlock();
 
    if (ret) {




More information about the mesa-commit mailing list