diff options
author | Siarhei Siamashka <siarhei.siamashka@nokia.com> | 2009-04-01 18:26:24 -0400 |
---|---|---|
committer | Jeff Muizelaar <jmuizelaar@mozilla.com> | 2009-04-01 18:26:24 -0400 |
commit | cdcbd9be3a2318bf650b8f56fea51acb5991b075 (patch) | |
tree | e140f6305b53665bc54bec33c0ee80d9ad15ed4f | |
parent | a9adae3dc38764fe055b66e38175be5220fb3f9a (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.c | 2 |
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 |