diff options
author | Maarten Maathuis <madman2003@gmail.com> | 2009-02-16 20:41:14 +0100 |
---|---|---|
committer | Maarten Maathuis <madman2003@gmail.com> | 2009-02-16 20:41:14 +0100 |
commit | caa5310e163b040689383f6d25ccab5ef1b2e215 (patch) | |
tree | 6e2bf4862b8b837f45a18486bf5050d96d40e48c | |
parent | 46eeaf82e228df1c5971a24dc815566516e19be9 (diff) |
exa: reintroduce src rect optimisation, with a slightly higher threshold.
- I got some feedback on gtkperf line test regression.
- The increased threshold should ensure the destination optimisation is dominant.
-rw-r--r-- | exa/exa_migration.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/exa/exa_migration.c b/exa/exa_migration.c index 59db25b72..9d0eda0de 100644 --- a/exa/exa_migration.c +++ b/exa/exa_migration.c @@ -257,6 +257,13 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc, pExaPixmap->offscreen = save_offscreen; pPixmap->devKind = save_pitch; + /* Try to prevent source valid region from growing too many rects by + * removing parts of it which are also in the destination valid region. + * Removing anything beyond that would lead to data loss. + */ + if (REGION_NUM_RECTS(pValidSrc) > 20) + REGION_SUBTRACT(pScreen, pValidSrc, pValidSrc, pValidDst); + /* The copied bits are now valid in destination */ REGION_UNION(pScreen, pValidDst, pValidDst, &CopyReg); |