debian/patches/179_glx_cleanup_drawables.patch |   45 +++++++++++++++++++++++++
 debian/patches/series                          |    1 
 2 files changed, 46 insertions(+)

New commits:
commit 7a73233990c99b96c0e4db5f7ef46b5432b44fd2
Author: Bryce Harrington <br...@bryceharrington.org>
Date:   Tue Aug 4 01:52:16 2009 -0700

    Add patch 179 as well

diff --git a/debian/patches/179_glx_cleanup_drawables.patch 
b/debian/patches/179_glx_cleanup_drawables.patch
new file mode 100644
index 0000000..b959569
--- /dev/null
+++ b/debian/patches/179_glx_cleanup_drawables.patch
@@ -0,0 +1,45 @@
+commit 3020b1d43e34fca08cd51f7c7c8ed51497d49ef3
+Author: Michel Dänzer <daen...@vmware.com>
+Date:   Tue Jun 23 16:45:40 2009 +0200
+
+    glx: Clean up more thoroughly if the drawable of a current context goes 
away.
+    
+    Fixes crash when restarting compiz, due to cl->currentContexts[x] being 
stale.
+
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 520eb2e..a571ec9 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -128,8 +128,31 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
+ 
+     for (c = glxAllContexts; c; c = c->next) {
+       if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) 
{
++          int i;
++
+           (*c->loseCurrent)(c);
+-          __glXFlushContextCache();
++          c->isCurrent = GL_FALSE;
++          if (c == __glXLastContext)
++              __glXFlushContextCache();
++
++          for (i = 1; i < currentMaxClients; i++) {
++              if (clients[i]) {
++                  __GLXclientState *cl = glxGetClient(clients[i]);
++
++                  if (cl->inUse) {
++                      int j;
++
++                      for (j = 0; j < cl->numCurrentContexts; j++) {
++                          if (cl->currentContexts[j] == c)
++                              cl->currentContexts[j] = NULL;
++                      }
++                  }
++              }
++          }
++
++          if (!c->idExists) {
++              __glXFreeContext(c);
++          }
+       }
+       if (c->drawPriv == glxPriv)
+           c->drawPriv = NULL;
diff --git a/debian/patches/series b/debian/patches/series
index 43496f5..4c07c9b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -33,3 +33,4 @@ fedora-pci-primary.diff
 174_set_bg_pixmap_of_cow_to_none.patch
 177_animated_cursor_change_master.patch
 178_glx_flush_cache.patch
+179_glx_cleanup_drawables.patch


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to