diff --git a/ChangeLog b/ChangeLog index 9a7876bce..c238bb4d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-03-10 Eric Anholt + + * exa/exa.c: (exaPrepareAccess), (exaFinishAccess): + Move the exaDrawableDirty in exaPrepareAccess to exaFinishAccess, which + is after the drawing is done. Previously, a failed PrepareAccess could + have migrated and cleared the dirty flag before the damage was ever + done. + 2006-03-10 Eric Anholt * hw/xfree86/vbe/vbe.c: (vbeProbeDDC): diff --git a/exa/exa.c b/exa/exa.c index 7d72954c5..ffb80dd37 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -230,8 +230,6 @@ exaPrepareAccess(DrawablePtr pDrawable, int index) pPixmap = exaGetDrawablePixmap (pDrawable); - if (index == EXA_PREPARE_DEST) - exaDrawableDirty (pDrawable); if (exaPixmapIsOffscreen (pPixmap)) exaWaitSync (pDrawable->pScreen); else @@ -255,6 +253,9 @@ exaFinishAccess(DrawablePtr pDrawable, int index) ExaScreenPriv (pScreen); PixmapPtr pPixmap; + if (index == EXA_PREPARE_DEST) + exaDrawableDirty (pDrawable); + if (pExaScr->info->FinishAccess == NULL) return;