summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@nokia.com>2009-04-01 18:26:24 -0400
committerJeff Muizelaar <jmuizelaar@mozilla.com>2009-04-01 18:26:24 -0400
commitcdcbd9be3a2318bf650b8f56fea51acb5991b075 (patch)
treee140f6305b53665bc54bec33c0ee80d9ad15ed4f
parenta9adae3dc38764fe055b66e38175be5220fb3f9a (diff)
Set srcRepeat = False when using fbCompositeSrcScaleNearest
NORMAL repeat was broken (the optimized function can handle repeat operation itself and can be screwed up if 'pixman_walk_composite_region' tries to help it by splitting the work into handling multiple separate areas). Splitting work into handling different areas does not work right for the transform case (and it is never used for generic path). The point is that this splitting only has full pixel precision at the moment, while correct blitting needs to preserve some fractional part in calculations when moving from one "tile" to another.
-rw-r--r--pixman/pixman-pict.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
index 81f81fea..5f3ddd29 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
@@ -1969,6 +1969,8 @@ pixman_image_composite (pixman_op_t op,
pSrc->common.transform->matrix[2][1] == 0 &&
pSrc->common.transform->matrix[2][2] == pixman_fixed_1) {
func = fbCompositeSrcScaleNearest;
+ /* Like the general path, fbCompositeSrcScaleNearest handles all the repeat types itself */
+ srcRepeat = FALSE;
}
} else if ((pSrc->type == BITS || pixman_image_can_get_solid (pSrc)) && (!pMask || pMask->type == BITS)
&& !srcTransform && !maskTransform