diff options
author | Dave Airlie <airlied@redhat.com> | 2012-10-10 16:21:43 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-10-10 16:21:43 +1000 |
commit | 29542d7de6d01e3f281b9ad17a0dd3121c4e3937 (patch) | |
tree | 16a78de9d65dd6a2de7764939517b15847479d1a | |
parent | ce51699744b951f3f0929a4c8cd6d2d003edec9c (diff) |
gc/picture: fix clip mask
-rw-r--r-- | dix/impedance.c | 8 | ||||
-rw-r--r-- | render/impedpict.c | 8 |
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; |