diff options
author | Jeremy Huddleston <jeremyhu@apple.com> | 2010-02-12 19:48:52 -0800 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2010-07-31 14:48:58 -0700 |
commit | 2d6f9fe547e22503e23cba6f5edf383ae51637e5 (patch) | |
tree | 6efce3ae6faa5113823617c3f5007bb571b0be60 | |
parent | 1c5084dedbc96cac70c6769d01202f39507f91ed (diff) |
fb: Revert fb changes that broke XQuartzXQuartz-2.5.3
http://bugs.freedesktop.org/show_bug.cgi?id=26124
Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
Revert "fb: Adjust transform or composite coordinates for pixman operations"
http://bugs.freedesktop.org/26124
This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r-- | fb/fb.h | 7 | ||||
-rw-r--r-- | fb/fbpict.c | 72 | ||||
-rw-r--r-- | fb/fbtrap.c | 6 |
3 files changed, 26 insertions, 59 deletions
@@ -2082,11 +2082,8 @@ fbFillRegionSolid (DrawablePtr pDrawable, FbBits xor); extern _X_EXPORT pixman_image_t * -image_from_pict (PicturePtr pict, - Bool has_clip, - int *xoff, - int *yoff); - +image_from_pict (PicturePtr pict, + Bool has_clip); extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *); #endif /* _FB_H_ */ diff --git a/fb/fbpict.c b/fb/fbpict.c index dddfce87f..07a22869d 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -158,24 +158,19 @@ fbComposite (CARD8 op, CARD16 height) { pixman_image_t *src, *mask, *dest; - int src_xoff, src_yoff; - int msk_xoff, msk_yoff; - int dst_xoff, dst_yoff; miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height); if (pMask) miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height); - src = image_from_pict (pSrc, FALSE, &src_xoff, &src_yoff); - mask = image_from_pict (pMask, FALSE, &msk_xoff, &msk_yoff); - dest = image_from_pict (pDst, TRUE, &dst_xoff, &dst_yoff); + src = image_from_pict (pSrc, TRUE); + mask = image_from_pict (pMask, TRUE); + dest = image_from_pict (pDst, TRUE); if (src && dest && !(pMask && !mask)) { pixman_image_composite (op, src, mask, dest, - xSrc + src_xoff, ySrc + src_yoff, - xMask + msk_xoff, yMask + msk_yoff, - xDst + dst_xoff, yDst + dst_yoff, + xSrc, ySrc, xMask, yMask, xDst, yDst, width, height); } @@ -275,22 +270,22 @@ create_conical_gradient_image (PictGradient *gradient) static pixman_image_t * create_bits_picture (PicturePtr pict, - Bool has_clip, - int *xoff, - int *yoff) + Bool has_clip) { - PixmapPtr pixmap; FbBits *bits; FbStride stride; - int bpp; + int bpp, xoff, yoff; pixman_image_t *image; - fbGetDrawablePixmap (pict->pDrawable, pixmap, *xoff, *yoff); - fbGetPixmapBitsData(pixmap, bits, stride, bpp); + fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff); + + bits = (FbBits*)((CARD8*)bits + + (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) + + (pict->pDrawable->x + xoff) * (bpp / 8)); image = pixman_image_create_bits ( pict->format, - pixmap->drawable.width, pixmap->drawable.height, + pict->pDrawable->width, pict->pDrawable->height, (uint32_t *)bits, stride * sizeof (FbStride)); @@ -316,52 +311,30 @@ create_bits_picture (PicturePtr pict, if (pict->clientClipType != CT_NONE) pixman_image_set_has_client_clip (image, TRUE); - if (*xoff || *yoff) - pixman_region_translate (pict->pCompositeClip, *xoff, *yoff); + pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y); pixman_image_set_clip_region (image, pict->pCompositeClip); - if (*xoff || *yoff) - pixman_region_translate (pict->pCompositeClip, -*xoff, -*yoff); + pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y); } /* Indexed table */ if (pict->pFormat->index.devPrivate) pixman_image_set_indexed (image, pict->pFormat->index.devPrivate); - /* Add in drawable origin to position within the image */ - *xoff += pict->pDrawable->x; - *yoff += pict->pDrawable->y; - return image; } static void -set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +set_image_properties (pixman_image_t *image, PicturePtr pict) { pixman_repeat_t repeat; pixman_filter_t filter; if (pict->transform) { - /* For source images, adjust the transform to account - * for the drawable offset within the pixman image, - * then set the offset to 0 as it will be used - * to compute positions within the transformed image. - */ - if (!has_clip) { - struct pixman_transform adjusted; - - adjusted = *pict->transform; - pixman_transform_translate(&adjusted, - NULL, - pixman_int_to_fixed(*xoff), - pixman_int_to_fixed(*yoff)); - pixman_image_set_transform (image, &adjusted); - *xoff = 0; - *yoff = 0; - } else - pixman_image_set_transform (image, pict->transform); + pixman_image_set_transform ( + image, (pixman_transform_t *)pict->transform); } switch (pict->repeatType) @@ -388,8 +361,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int if (pict->alphaMap) { - int alpha_xoff, alpha_yoff; - pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff); + pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE); pixman_image_set_alpha_map ( image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y); @@ -422,7 +394,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int } pixman_image_t * -image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +image_from_pict (PicturePtr pict, + Bool has_clip) { pixman_image_t *image = NULL; @@ -431,7 +404,7 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) if (pict->pDrawable) { - image = create_bits_picture (pict, has_clip, xoff, yoff); + image = create_bits_picture (pict, has_clip); } else if (pict->pSourcePict) { @@ -452,11 +425,10 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) else if (sp->type == SourcePictTypeConical) image = create_conical_gradient_image (gradient); } - *xoff = *yoff = 0; } if (image) - set_image_properties (image, pict, has_clip, xoff, yoff); + set_image_properties (image, pict); return image; } diff --git a/fb/fbtrap.c b/fb/fbtrap.c index 515e2e1c1..830603ae7 100644 --- a/fb/fbtrap.c +++ b/fb/fbtrap.c @@ -40,8 +40,7 @@ fbAddTraps (PicturePtr pPicture, int ntrap, xTrap *traps) { - int image_xoff, image_yoff; - pixman_image_t *image = image_from_pict (pPicture, FALSE, &image_xoff, &image_yoff); + pixman_image_t *image = image_from_pict (pPicture, FALSE); if (!image) return; @@ -57,8 +56,7 @@ fbRasterizeTrapezoid (PicturePtr pPicture, int x_off, int y_off) { - int mask_xoff, mask_yoff; - pixman_image_t *image = image_from_pict (pPicture, FALSE, &mask_xoff, &mask_yoff); + pixman_image_t *image = image_from_pict (pPicture, FALSE); if (!image) return; |