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