diff options
author | Ian Romanick <idr@us.ibm.com> | 2007-06-18 16:51:13 -0700 |
---|---|---|
committer | Ian Romanick <idr@us.ibm.com> | 2007-06-18 16:51:13 -0700 |
commit | ab7a6d860d4a275a810a64b1ba7b13726ed10575 (patch) | |
tree | 1198628dab08c3989dff073b4bbe6920a1feca59 /exa/exa_unaccel.c | |
parent | e9130b8bac73a0843d5ff6b2216eccfb3e094a48 (diff) | |
parent | 2e7fef7d0837939e822c40b6ac77e7f0e66d57bd (diff) |
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into pci-rework
Conflicts:
hw/xfree86/os-support/bus/Pci.c
hw/xfree86/os-support/bus/linuxPci.c
Diffstat (limited to 'exa/exa_unaccel.c')
-rw-r--r-- | exa/exa_unaccel.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c index 7713a08c9..708d1eac6 100644 --- a/exa/exa_unaccel.c +++ b/exa/exa_unaccel.c @@ -88,10 +88,15 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, int w, int h, int leftPad, int format, char *bits) { + PixmapPtr pPixmap = exaGetDrawablePixmap(pDrawable); + int xoff, yoff; + EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable))); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); exaFinishAccess (pDrawable, EXA_PREPARE_DEST); + exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff); + exaPixmapDirty(pPixmap, x + xoff, y + yoff, x + xoff + w, y + yoff + h); } RegionPtr @@ -201,32 +206,11 @@ ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC, { EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable))); - if (nrect) { - int x1 = max(prect->x, 0), y1 = max(prect->y, 0); - int x2 = min(prect->x + prect->width, pDrawable->width); - int y2 = min(prect->y + prect->height, pDrawable->height); - - exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); - exaPrepareAccessGC (pGC); - fbPolyFillRect (pDrawable, pGC, nrect, prect); - exaFinishAccessGC (pGC); - exaFinishAccess (pDrawable, EXA_PREPARE_DEST); - - /* Only track bounding box of damage, as this path can degenerate to - * zillions of damage boxes - */ - while (--nrect) - { - prect++; - x1 = min(x1, prect->x); - x2 = max(x2, prect->x + prect->width); - y1 = min(y1, prect->y); - y2 = max(y2, prect->y + prect->height); - } - - exaDrawableDirty (pDrawable, pDrawable->x + x1, pDrawable->y + y1, - pDrawable->x + x2, pDrawable->y + y2); - } + exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); + exaPrepareAccessGC (pGC); + fbPolyFillRect (pDrawable, pGC, nrect, prect); + exaFinishAccessGC (pGC); + exaFinishAccess (pDrawable, EXA_PREPARE_DEST); } void |