[PATCH 2/2] Fix miComputeCompositeRegion() to follow new clip rules.
Soeren Sandmann
sandmann at daimi.au.dk
Sat Jun 13 08:02:00 PDT 2009
Ignore the hierarchy clip, and always apply any client clip after
transformation and repeating.
---
render/mipict.c | 40 ++++++++++++++++------------------------
1 files changed, 16 insertions(+), 24 deletions(-)
diff --git a/render/mipict.c b/render/mipict.c
index e0d40ae..71f3de7 100644
--- a/render/mipict.c
+++ b/render/mipict.c
@@ -313,32 +313,24 @@ miClipPictureSrc (RegionPtr pRegion,
int dx,
int dy)
{
- /* XXX what to do with clipping from transformed pictures? */
- if (pPicture->transform || !pPicture->pDrawable)
- return TRUE;
- if (pPicture->repeat)
+ if (pPicture->clientClipType != CT_NONE)
{
- if (pPicture->clientClipType != CT_NONE)
- {
- pixman_region_translate ( pRegion,
- dx - pPicture->clipOrigin.x,
- dy - pPicture->clipOrigin.y);
- if (!REGION_INTERSECT (pScreen, pRegion, pRegion,
- (RegionPtr) pPicture->pCompositeClip)) // clientClip))
- return FALSE;
- pixman_region_translate ( pRegion,
- - (dx - pPicture->clipOrigin.x),
- - (dy - pPicture->clipOrigin.y));
- }
- return TRUE;
- }
- else
- {
- return miClipPictureReg (pRegion,
- pPicture->pCompositeClip,
- dx,
- dy);
+ Bool result;
+
+ pixman_region_translate ( pPicture->clientClip,
+ pPicture->clipOrigin.x - dx,
+ pPicture->clipOrigin.y - dy);
+
+ result = REGION_INTERSECT (pScreen, pRegion, pRegion, pPicture->clientClip);
+
+ pixman_region_translate ( pPicture->clientClip,
+ - (pPicture->clipOrigin.x - dx),
+ - (pPicture->clipOrigin.y - dy));
+
+ if (!result)
+ return FALSE;
}
+ return TRUE;
}
void
--
1.6.2.2
More information about the xorg-devel
mailing list