[PATCH 2/2] exa/mixed: avoid copying back pixmap data when no migration took place
Maarten Maathuis
madman2003 at gmail.com
Sun Nov 1 13:08:41 PST 2009
- This fixes strange corruption i have been dealing it.
- When the driver handles the prepare access no copying is needed.
- Delayed pixmap creation should be fine, because it's handled by the
first prepare access, but the exaPixmapIsOffscreen check in finish access
will return FALSE without a driver pixmap.
Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>
---
exa/exa_migration_mixed.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index 6065d75..0fbf1b2 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -210,7 +210,8 @@ void exaFinishAccess_mixed(PixmapPtr pPixmap, int index)
{
ExaPixmapPriv(pPixmap);
- if (pExaPixmap->pDamage && exaPixmapIsOffscreen(pPixmap)) {
+ if (pExaPixmap->pDamage && exaPixmapIsOffscreen(pPixmap) &&
+ !pExaPixmap->offscreen) {
DamageRegionProcessPending(&pPixmap->drawable);
if (index == EXA_PREPARE_DEST || index == EXA_PREPARE_AUX_DEST) {
@@ -223,5 +224,7 @@ void exaFinishAccess_mixed(PixmapPtr pPixmap, int index)
pPixmap->devKind = pExaPixmap->fb_pitch;
} else
exaMoveInPixmap_mixed(pPixmap);
+
+ pExaPixmap->offscreen = TRUE;
}
}
--
1.6.5.1
More information about the xorg-devel
mailing list