Fix miComputeCompositeRegion() to follow new clip rules.

Ignore the hierarchy clip, and always apply any client clip after
transformation and repeating.
This commit is contained in:
Søren Sandmann Pedersen 2009-06-13 10:55:04 -04:00
parent e9aa61e9f0
commit 128cd03eec

View File

@ -313,32 +313,24 @@ miClipPictureSrc (RegionPtr pRegion,
int dx, int dx,
int dy) int dy)
{ {
/* XXX what to do with clipping from transformed pictures? */ if (pPicture->clientClipType != CT_NONE)
if (pPicture->transform || !pPicture->pDrawable)
return TRUE;
if (pPicture->repeat)
{ {
if (pPicture->clientClipType != CT_NONE) Bool result;
{
pixman_region_translate ( pRegion, pixman_region_translate ( pPicture->clientClip,
dx - pPicture->clipOrigin.x, pPicture->clipOrigin.x - dx,
dy - pPicture->clipOrigin.y); pPicture->clipOrigin.y - dy);
if (!REGION_INTERSECT (pScreen, pRegion, pRegion,
(RegionPtr) pPicture->pCompositeClip)) // clientClip)) result = REGION_INTERSECT (pScreen, pRegion, pRegion, pPicture->clientClip);
return FALSE;
pixman_region_translate ( pRegion, pixman_region_translate ( pPicture->clientClip,
- (dx - pPicture->clipOrigin.x), - (pPicture->clipOrigin.x - dx),
- (dy - pPicture->clipOrigin.y)); - (pPicture->clipOrigin.y - dy));
}
return TRUE; if (!result)
} return FALSE;
else
{
return miClipPictureReg (pRegion,
pPicture->pCompositeClip,
dx,
dy);
} }
return TRUE;
} }
void void