From 2dd5f40bc052a48c964acefe43005d727c045238 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 28 Apr 2005 11:16:52 +0000 Subject: [PATCH] Set image->pCompositeClip here. (IcComputeCompositeRegion) src/icrect.c (pixman_color_rects): Remove workaround clipping to the clientClip. --- pixman/ChangeLog | 7 +++++++ pixman/src/icimage.c | 23 ++++++++++++++++------- pixman/src/icrect.c | 2 -- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pixman/ChangeLog b/pixman/ChangeLog index 7ab61ca1c..d3c555334 100644 --- a/pixman/ChangeLog +++ b/pixman/ChangeLog @@ -1,3 +1,10 @@ +2005-04-27 Owen Taylor + + * src/icimage.c (pixman_image_set_clip_region): Set + image->pCompositeClip here. + (IcComputeCompositeRegion) src/icrect.c (pixman_color_rects): + Remove workaround clipping to the clientClip. + 2005-04-27 Owen Taylor * src/ic.c: Don't use pixman_compositeSrc_8888x8888 when diff --git a/pixman/src/icimage.c b/pixman/src/icimage.c index 516a0bc4e..24e6e105b 100644 --- a/pixman/src/icimage.c +++ b/pixman/src/icimage.c @@ -283,6 +283,22 @@ pixman_image_set_clip_region (pixman_image_t *image, pixman_region_copy (image->clientClip, region); image->clientClipType = CT_REGION; } + + image->pCompositeClip = pixman_region_create(); + pixman_region_union_rect (image->pCompositeClip, image->pCompositeClip, + 0, 0, image->pixels->width, image->pixels->height); + if (region) { + pixman_region_translate (image->pCompositeClip, + - image->clipOrigin.x, + - image->clipOrigin.y); + pixman_region_intersect (image->pCompositeClip, + image->pCompositeClip, + region); + pixman_region_translate (image->pCompositeClip, + image->clipOrigin.x, + image->clipOrigin.y); + } + image->stateChanges |= CPClipMask; return 0; } @@ -629,13 +645,6 @@ IcComputeCompositeRegion (pixman_region16_t *region, return 0; } } - if (iDst->clientClipType != CT_NONE) { - if (!IcClipImageReg (region, iDst->clientClip, 0, 0)) - { - pixman_region_destroy (region); - return 0; - } - } return 1; } diff --git a/pixman/src/icrect.c b/pixman/src/icrect.c index 5d202db04..996eb4f39 100644 --- a/pixman/src/icrect.c +++ b/pixman/src/icrect.c @@ -146,8 +146,6 @@ pixman_color_rects (pixman_image_t *dst, clipPict->alphaOrigin.x, clipPict->alphaOrigin.y); } - if (clipPict->clientClipType != CT_NONE) - pixman_region_intersect (clip, clip, clipPict->clientClip); if (xoff || yoff) {