From caa5310e163b040689383f6d25ccab5ef1b2e215 Mon Sep 17 00:00:00 2001 From: Maarten Maathuis Date: Mon, 16 Feb 2009 20:41:14 +0100 Subject: [PATCH] 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. --- exa/exa_migration.c | 7 +++++++ 1 file changed, 7 insertions(+) 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);