summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2009-02-06 18:30:43 +0100
committerMichel Dänzer <daenzer@vmware.com>2009-02-06 18:30:43 +0100
commitf112d6bf59964f317ab236221f7bce7fe2603ab8 (patch)
tree7ed393dcdeb22813672f5e2dc269497f86c53b5a
parent3948b523893d3d44b6a088340c4252e969613769 (diff)
EXA: Try harder to keep current pixmap copy up to date in exaMigrateToward*.
This is probably required, but apparently not sufficient, for making migration heuristics other than "always" work correctly again. Not that I really care about them...
-rw-r--r--exa/exa_migration.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 4623eccdd..19e0f71d9 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -463,7 +463,11 @@ exaMigrateTowardFb (ExaMigrationPtr migrate)
exaDoMoveInPixmap(migrate);
}
- ExaOffscreenMarkUsed (pPixmap);
+ if (exaPixmapIsOffscreen(pPixmap)) {
+ exaCopyDirtyToFb (migrate);
+ ExaOffscreenMarkUsed (pPixmap);
+ } else
+ exaCopyDirtyToSys (migrate);
}
/**
@@ -496,6 +500,12 @@ exaMigrateTowardSys (ExaMigrationPtr migrate)
if (pExaPixmap->score <= EXA_PIXMAP_SCORE_MOVE_OUT && pExaPixmap->area)
exaDoMoveOutPixmap(migrate);
+
+ if (exaPixmapIsOffscreen(pPixmap)) {
+ exaCopyDirtyToFb (migrate);
+ ExaOffscreenMarkUsed (pPixmap);
+ } else
+ exaCopyDirtyToSys (migrate);
}
/**