diff options
author | Michel Dänzer <michel@tungstengraphics.com> | 2008-05-24 20:01:41 +0200 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2008-05-24 20:01:41 +0200 |
commit | 29586101dc11d498b212510f8dedbfeca7f8c859 (patch) | |
tree | 0f9efa252848ed228d102c64b98f539411328d08 /exa/exa_accel.c | |
parent | f6d61d3d86971d6a202b46ff2fab8c8799a4d057 (diff) |
EXA: Only record damage generated by rendering operations.
Recording damage from other operations (e.g. creating a client damage record)
may confuse the migration code resulting in corruption.
Option "EXAOptimizeMigration" appears safe now, so enable it by default. Also
remove it from the manpage, as it should only be necessary on request in the
course of bug report diagnostics anymore.
Diffstat (limited to 'exa/exa_accel.c')
-rw-r--r-- | exa/exa_accel.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/exa/exa_accel.c b/exa/exa_accel.c index edaec23df..1dbb269f6 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -262,6 +262,7 @@ exaDoShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, if (format == ZPixmap) { PixmapPtr pPixmap; + ExaPixmapPriv(exaGetDrawablePixmap(pDrawable)); pPixmap = GetScratchPixmapHeader(pDrawable->pScreen, w, h, depth, BitsPerPixel(depth), PixmapBytePad(w, depth), (pointer)data); @@ -272,7 +273,8 @@ exaDoShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, pGC->alu)) exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); else - ExaDoPrepareAccess (pDrawable, EXA_PREPARE_DEST); + exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, + DamagePendingRegion(pExaPixmap->pDamage)); fbCopyArea((DrawablePtr)pPixmap, pDrawable, pGC, sx, sy, sw, sh, dx, dy); exaFinishAccess(pDrawable, EXA_PREPARE_DEST); @@ -316,7 +318,7 @@ exaShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format, pGC->alu)) exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); else - ExaDoPrepareAccess (pDrawable, EXA_PREPARE_DEST); + exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, ®ion); fbShmPutImage(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data); exaFinishAccess(pDrawable, EXA_PREPARE_DEST); |