Mesa (master): winsys/xlib: fix up allocation/dealloction of XImage

Brian Paul brianp at kemper.freedesktop.org
Fri Oct 22 01:56:17 UTC 2010


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Oct 21 19:49:32 2010 -0600

winsys/xlib: fix up allocation/dealloction of XImage

Fixes a crash upon exit when using remote display.

---

 src/gallium/winsys/sw/xlib/xlib_sw_winsys.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
index 003fa62..00fc0b7 100644
--- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
+++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
@@ -196,11 +196,14 @@ alloc_ximage(struct xm_displaytarget *xm_dt,
              struct xlib_drawable *xmb,
              unsigned width, unsigned height)
 {
+   /* try allocating a shared memory image first */
    if (xm_dt->shm) {
       alloc_shm_ximage(xm_dt, xmb, width, height);
-      return;
+      if (xm_dt->tempImage)
+         return; /* success */
    }
 
+   /* try regular (non-shared memory) image */
    xm_dt->tempImage = XCreateImage(xm_dt->display,
                                    xmb->visual,
                                    xmb->depth,
@@ -252,6 +255,10 @@ xm_displaytarget_destroy(struct sw_winsys *ws,
          
          xm_dt->shminfo.shmid = -1;
          xm_dt->shminfo.shmaddr = (char *) -1;
+
+         xm_dt->data = NULL;
+         if (xm_dt->tempImage)
+            xm_dt->tempImage->data = NULL;
       }
       else {
          FREE(xm_dt->data);




More information about the mesa-commit mailing list