diff options
author | Michel Dänzer <daenzer@vmware.com> | 2009-02-06 18:30:43 +0100 |
---|---|---|
committer | Michel Dänzer <daenzer@vmware.com> | 2009-02-06 18:30:43 +0100 |
commit | f112d6bf59964f317ab236221f7bce7fe2603ab8 (patch) | |
tree | 7ed393dcdeb22813672f5e2dc269497f86c53b5a /exa | |
parent | 3948b523893d3d44b6a088340c4252e969613769 (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...
Diffstat (limited to 'exa')
-rw-r--r-- | exa/exa_migration.c | 12 |
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); } /** |