summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2006-06-16 10:14:30 -0700
committerEric Anholt <anholt@FreeBSD.org>2006-06-16 10:14:30 -0700
commit53f74b6aa95fe57fda45fd8a051595e772f00402 (patch)
tree5215355b066770742ea9aff845aa9fc5bbf29621
parentb90088321e6ef84970aa97d7c851af93f49bf4b7 (diff)
Bugzilla #5120, #7246: In CW's GC ops, validate the backing GC against the
backing drawable if the serial numbers differ. Fixes crash in XAA which occurred when the DDX bumped the serial number on the backing drawable and expected it to get re-validated, and we didn't because the wrapped drawable hadn't been bumped.
-rw-r--r--miext/cw/cw_ops.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/miext/cw/cw_ops.c b/miext/cw/cw_ops.c
index 6ba804bb3..80b72806c 100644
--- a/miext/cw/cw_ops.c
+++ b/miext/cw/cw_ops.c
@@ -28,6 +28,7 @@
#include <stdlib.h>
#include "gcstruct.h"
+#include "pixmapstr.h"
#include "cw.h"
#define SETUP_BACKING_DST(_pDst, _pGC) \
@@ -43,6 +44,9 @@
&src_off_y)
#define PROLOGUE(pGC) do { \
+ if (pBackingGC->serialNumber != pBackingDst->serialNumber) { \
+ ValidateGC(pBackingDst, pBackingGC); \
+ } \
pGC->funcs = pGCPrivate->wrapFuncs;\
pGC->ops = pGCPrivate->wrapOps;\
} while (0)