summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2008-07-31 10:58:52 +0200
committerMichel Dänzer <michel@tungstengraphics.com>2008-07-31 10:58:52 +0200
commit64ebeeb5265a4c425b9397fdc86a6d81521a856e (patch)
tree9370ca0c487a56306ee24f589e413e5530638bdd
parent8405c25d9ddbfddb6b155a436f07ccad689e53bd (diff)
EXA: Fix exponential growth logic for GXcopy tiled fills.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=16908 .
-rw-r--r--exa/exa_accel.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index f7da91194..277ab1e87 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -1311,10 +1311,10 @@ exaFillRegionTiled (DrawablePtr pDrawable,
planemask)) {
for (i = 0; i < nbox; i++)
{
- int width = min(pBox[i].x2 - pBox[i].x1, tileWidth);
+ int dstX = pBox[i].x1 + tileWidth;
+ int dstY = pBox[i].y1 + tileHeight;
+ int width = min(pBox[i].x2 - dstX, tileWidth);
int height = min(pBox[i].y2 - pBox[i].y1, tileHeight);
- int dstX = pBox[i].x1 + width;
- int dstY = pBox[i].y1 + height;
while (dstX < pBox[i].x2) {
(*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,
@@ -1324,6 +1324,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
}
width = pBox[i].x2 - pBox[i].x1;
+ height = min(pBox[i].y2 - dstY, tileHeight);
while (dstY < pBox[i].y2) {
(*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,