diff options
author | marha <marha@users.sourceforge.net> | 2009-10-21 21:22:47 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-10-21 21:22:47 +0000 |
commit | e141b55eccf3c69d8ced513992e21463d37dbb03 (patch) | |
tree | eaeeeda04d5b6ce82d43d04466164b44a74d0951 /xorg-server/exa/exa.c | |
parent | d0fe50e45b3a640afa51eb8f45cf7c3a0df0740b (diff) | |
parent | 1f876171067c04fc21fccd5a3051f982fd85c0f0 (diff) | |
download | vcxsrv-e141b55eccf3c69d8ced513992e21463d37dbb03.tar.gz vcxsrv-e141b55eccf3c69d8ced513992e21463d37dbb03.tar.bz2 vcxsrv-e141b55eccf3c69d8ced513992e21463d37dbb03.zip |
svn merge ^/branches/released
Diffstat (limited to 'xorg-server/exa/exa.c')
-rw-r--r-- | xorg-server/exa/exa.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/xorg-server/exa/exa.c b/xorg-server/exa/exa.c index e264d440c..46e91820b 100644 --- a/xorg-server/exa/exa.c +++ b/xorg-server/exa/exa.c @@ -774,10 +774,18 @@ ExaBlockHandler(int screenNum, pointer blockData, pointer pTimeout, ScreenPtr pScreen = screenInfo.screens[screenNum]; ExaScreenPriv(pScreen); + /* Move any deferred results from a software fallback to the driver pixmap */ + if (pExaScr->deferred_mixed_pixmap) + exaMoveInPixmap_mixed(pExaScr->deferred_mixed_pixmap); + unwrap(pExaScr, pScreen, BlockHandler); (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask); wrap(pExaScr, pScreen, BlockHandler, ExaBlockHandler); + /* The rest only applies to classic EXA */ + if (pExaScr->info->flags & EXA_HANDLES_PIXMAPS) + return; + /* Try and keep the offscreen memory area tidy every now and then (at most * once per second) when the server has been idle for at least 100ms. */ @@ -991,10 +999,12 @@ exaDriverInit (ScreenPtr pScreen, * Replace various fb screen functions */ if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) && - !(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) { + (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) || + (pExaScr->info->flags & EXA_MIXED_PIXMAPS))) wrap(pExaScr, pScreen, BlockHandler, ExaBlockHandler); + if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) && + !(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) wrap(pExaScr, pScreen, WakeupHandler, ExaWakeupHandler); - } wrap(pExaScr, pScreen, CreateGC, exaCreateGC); wrap(pExaScr, pScreen, CloseScreen, exaCloseScreen); wrap(pExaScr, pScreen, GetImage, exaGetImage); |