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:
parent
e9aa61e9f0
commit
128cd03eec
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue