Bugzilla – Attachment 81265 Details for
Bug 152730
Massive XRender corruption ...
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
IDP Log In
|
Forgot Password
[patch]
1st version of the fix
fbcompose.patch (text/plain), 6.23 KB, created by
Radek Doulik
on 2006-05-02 14:14:47 UTC
(
hide
)
Description:
1st version of the fix
Filename:
MIME Type:
Creator:
Radek Doulik
Created:
2006-05-02 14:14:47 UTC
Size:
6.23 KB
patch
obsolete
>Index: fbcompose.c >=================================================================== >RCS file: /cvs/xorg/xc/programs/Xserver/fb/fbcompose.c,v >retrieving revision 1.26 >diff -u -p -r1.26 fbcompose.c >--- fbcompose.c 9 Dec 2005 18:35:20 -0000 1.26 >+++ fbcompose.c 2 May 2006 14:10:11 -0000 >@@ -2875,8 +2875,8 @@ static void fbFetchTransformed(PicturePt > x += xoff; > y += yoff; > >- v.vector[0] = IntToxFixed(x); >- v.vector[1] = IntToxFixed(y); >+ v.vector[0] = IntToxFixed(x - pict->pDrawable->x); >+ v.vector[1] = IntToxFixed(y - pict->pDrawable->y); > v.vector[2] = xFixed1; > > /* when using convolution filters one might get here without a transform */ >@@ -2927,7 +2927,7 @@ static void fbFetchTransformed(PicturePt > y = MOD(v.vector[1]>>16, pict->pDrawable->height); > x = MOD(v.vector[0]>>16, pict->pDrawable->width); > } >- if (POINT_IN_REGION (0, pict->pCompositeClip, x, y, &box)) >+ if (POINT_IN_REGION (0, pict->pCompositeClip, x + pict->pDrawable->x, y + pict->pDrawable->y, &box)) > buffer[i] = fetch(bits + (y + pict->pDrawable->y)*stride, x + pict->pDrawable->x, indexed); > else > buffer[i] = 0; >@@ -2940,6 +2940,10 @@ static void fbFetchTransformed(PicturePt > } else { > if (REGION_NUM_RECTS(pict->pCompositeClip) == 1) { > box = pict->pCompositeClip->extents; >+ box.x1 -= pict->pDrawable->x; >+ box.x2 -= pict->pDrawable->x; >+ box.y1 -= pict->pDrawable->y; >+ box.y2 -= pict->pDrawable->y; > for (i = 0; i < width; ++i) { > if (!v.vector[2]) { > buffer[i] = 0; >@@ -2970,7 +2974,7 @@ static void fbFetchTransformed(PicturePt > y = v.vector[1]>>16; > x = v.vector[0]>>16; > } >- if (POINT_IN_REGION (0, pict->pCompositeClip, x, y, &box)) >+ if (POINT_IN_REGION (0, pict->pCompositeClip, x + pict->pDrawable->x, y + pict->pDrawable->y, &box)) > buffer[i] = fetch(bits + (y + pict->pDrawable->y)*stride, x + pict->pDrawable->x, indexed); > else > buffer[i] = 0; >@@ -3082,14 +3086,14 @@ static void fbFetchTransformed(PicturePt > > b = bits + (y1 + pict->pDrawable->y)*stride; > >- tl = POINT_IN_REGION(0, pict->pCompositeClip, x1, y1, &box) >+ tl = POINT_IN_REGION(0, pict->pCompositeClip, x1 + pict->pDrawable->x, y1 + pict->pDrawable->y, &box) > ? fetch(b, x1 + pict->pDrawable->x, indexed) : 0; >- tr = POINT_IN_REGION(0, pict->pCompositeClip, x2, y1, &box) >+ tr = POINT_IN_REGION(0, pict->pCompositeClip, x2 + pict->pDrawable->x, y1 + pict->pDrawable->y, &box) > ? fetch(b, x2 + pict->pDrawable->x, indexed) : 0; > b = bits + (y2 + pict->pDrawable->y)*stride; >- bl = POINT_IN_REGION(0, pict->pCompositeClip, x1, y2, &box) >+ bl = POINT_IN_REGION(0, pict->pCompositeClip, x1 + pict->pDrawable->x, y2 + pict->pDrawable->y, &box) > ? fetch(b, x1 + pict->pDrawable->x, indexed) : 0; >- br = POINT_IN_REGION(0, pict->pCompositeClip, x2, y2, &box) >+ br = POINT_IN_REGION(0, pict->pCompositeClip, x2 + pict->pDrawable->x, y2 + pict->pDrawable->y, &box) > ? fetch(b, x2 + pict->pDrawable->x, indexed) : 0; > > ft = FbGet8(tl,0) * idistx + FbGet8(tr,0) * distx; >@@ -3114,6 +3118,10 @@ static void fbFetchTransformed(PicturePt > } else { > if (REGION_NUM_RECTS(pict->pCompositeClip) == 1) { > box = pict->pCompositeClip->extents; >+ box.x1 -= pict->pDrawable->x; >+ box.x2 -= pict->pDrawable->x; >+ box.y1 -= pict->pDrawable->y; >+ box.y2 -= pict->pDrawable->y; > for (i = 0; i < width; ++i) { > if (!v.vector[2]) { > buffer[i] = 0; >@@ -3209,14 +3217,14 @@ static void fbFetchTransformed(PicturePt > b = bits + (y1 + pict->pDrawable->y)*stride; > x_off = x1 + pict->pDrawable->x; > >- tl = POINT_IN_REGION(0, pict->pCompositeClip, x1, y1, &box) >+ tl = POINT_IN_REGION(0, pict->pCompositeClip, x1 + pict->pDrawable->x, y1 + pict->pDrawable->y, &box) > ? fetch(b, x_off, indexed) : 0; >- tr = POINT_IN_REGION(0, pict->pCompositeClip, x2, y1, &box) >+ tr = POINT_IN_REGION(0, pict->pCompositeClip, x2 + pict->pDrawable->x, y1 + pict->pDrawable->y, &box) > ? fetch(b, x_off + 1, indexed) : 0; > b += stride; >- bl = POINT_IN_REGION(0, pict->pCompositeClip, x1, y2, &box) >+ bl = POINT_IN_REGION(0, pict->pCompositeClip, x1 + pict->pDrawable->x, y2 + pict->pDrawable->y, &box) > ? fetch(b, x_off, indexed) : 0; >- br = POINT_IN_REGION(0, pict->pCompositeClip, x2, y2, &box) >+ br = POINT_IN_REGION(0, pict->pCompositeClip, x2 + pict->pDrawable->x, y2 + pict->pDrawable->y, &box) > ? fetch(b, x_off + 1, indexed) : 0; > > ft = FbGet8(tl,0) * idistx + FbGet8(tr,0) * distx; >@@ -3274,7 +3282,7 @@ static void fbFetchTransformed(PicturePt > for (x = x1; x < x2; x++) { > if (*p) { > int tx = (pict->repeatType == RepeatNormal) ? MOD (x, pict->pDrawable->width) : x; >- if (POINT_IN_REGION (0, pict->pCompositeClip, tx, ty, &box)) { >+ if (POINT_IN_REGION (0, pict->pCompositeClip, tx + pict->pDrawable->x, ty + pict->pDrawable->y, &box)) { > FbBits *b = bits + (ty + pict->pDrawable->y)*stride; > CARD32 c = fetch(b, tx + pict->pDrawable->x, indexed); >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 152730
:
69731
|
69732
|
69734
|
69735
|
69742
|
70149
|
75710
|
75712
|
79183
|
79184
|
80327
|
80328
|
80454
|
80492
|
80595
|
81265
|
81340
|
82989