diff options
| author | Michel Dänzer <michel@tungstengraphics.com> | 2008-07-31 10:58:52 +0200 |
|---|---|---|
| committer | Michel Dänzer <michel@tungstengraphics.com> | 2008-07-31 10:58:52 +0200 |
| commit | 64ebeeb5265a4c425b9397fdc86a6d81521a856e (patch) | |
| tree | 9370ca0c487a56306ee24f589e413e5530638bdd | |
| parent | 8405c25d9ddbfddb6b155a436f07ccad689e53bd (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.c | 7 |
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, |
