diff options
author | marha <marha@users.sourceforge.net> | 2010-01-05 08:57:42 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-01-05 08:57:42 +0000 |
commit | 4b1326f06330c00501dd84100ed3a1987e2fa631 (patch) | |
tree | 6675ebcf771a6fdfeb9a2164f08811407731482e /xorg-server/exa/exa_mixed.c | |
parent | 7397e255c2e82618ab55ef2c81636c8e688b1225 (diff) | |
parent | 163827567b71b0763a4c1a7104159cd08b5c2d95 (diff) | |
download | vcxsrv-4b1326f06330c00501dd84100ed3a1987e2fa631.tar.gz vcxsrv-4b1326f06330c00501dd84100ed3a1987e2fa631.tar.bz2 vcxsrv-4b1326f06330c00501dd84100ed3a1987e2fa631.zip |
svn merge ^/branches/released
Diffstat (limited to 'xorg-server/exa/exa_mixed.c')
-rw-r--r-- | xorg-server/exa/exa_mixed.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/xorg-server/exa/exa_mixed.c b/xorg-server/exa/exa_mixed.c index 155ed47c5..21cc3bd13 100644 --- a/xorg-server/exa/exa_mixed.c +++ b/xorg-server/exa/exa_mixed.c @@ -94,9 +94,25 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth, if (!w || !h) { exaCreateDriverPixmap_mixed(pPixmap); pExaPixmap->use_gpu_copy = exaPixmapHasGpuCopy(pPixmap); - } else + } else { pExaPixmap->use_gpu_copy = FALSE; + if (w == 1 && h == 1) { + pExaPixmap->sys_ptr = malloc((pPixmap->drawable.bitsPerPixel + 7) / 8); + + /* Set up damage tracking */ + pExaPixmap->pDamage = DamageCreate(exaDamageReport_mixed, NULL, + DamageReportNonEmpty, TRUE, + pPixmap->drawable.pScreen, + pPixmap); + + DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage); + /* This ensures that pending damage reflects the current operation. */ + /* This is used by exa to optimize migration. */ + DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE); + } + } + /* During a fallback we must prepare access. */ if (pExaScr->fallback_counter) exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST); |