summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-10-10 16:21:43 +1000
committerDave Airlie <airlied@redhat.com>2012-10-10 16:21:43 +1000
commit29542d7de6d01e3f281b9ad17a0dd3121c4e3937 (patch)
tree16a78de9d65dd6a2de7764939517b15847479d1a
parentce51699744b951f3f0929a4c8cd6d2d003edec9c (diff)
gc/picture: fix clip mask
-rw-r--r--dix/impedance.c8
-rw-r--r--render/impedpict.c8
2 files changed, 14 insertions, 2 deletions
diff --git a/dix/impedance.c b/dix/impedance.c
index 8fa728a0a..78f4cb955 100644
--- a/dix/impedance.c
+++ b/dix/impedance.c
@@ -181,7 +181,13 @@ static void impedModChildGC(GCPtr pGC, GCPtr pChild, int index, unsigned long ma
break;
case GCClipMask:
pChild->clientClipType = pGC->clientClipType;
- pChild->clientClip = pGC->clientClip;
+ if (pGC->clientClipType == CT_REGION) {
+ RegionPtr pReg;
+ pReg = RegionCreate(NULL, 1);
+ RegionCopy(pReg, (RegionPtr)pGC->clientClip);
+ pChild->clientClip = (void *)pReg;
+ } else
+ pChild->clientClip = pGC->clientClip;
break;
default:
diff --git a/render/impedpict.c b/render/impedpict.c
index aab47a181..149cc0e4f 100644
--- a/render/impedpict.c
+++ b/render/impedpict.c
@@ -207,7 +207,13 @@ impedChangeOnePicture(PicturePtr pPicture, PicturePtr pChild, int index, Mask ma
break;
case CPClipMask:
pChild->clientClipType = pPicture->clientClipType;
- pChild->clientClip = pPicture->clientClip;
+ if (pPicture->clientClipType == CT_REGION) {
+ RegionPtr pReg;
+ pReg = RegionCreate(NULL, 1);
+ RegionCopy(pReg, (RegionPtr)pPicture->clientClip);
+ pChild->clientClip = (void *)pReg;
+ } else
+ pChild->clientClip = pPicture->clientClip;
break;
case CPGraphicsExposure:
pChild->graphicsExposures = pPicture->graphicsExposures;