aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix/main.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-07-09 08:17:19 +0200
committermarha <marha@users.sourceforge.net>2012-07-09 08:17:19 +0200
commit98fa64178af8ad608e19391053b40b0772466c64 (patch)
tree841e3eebe0277bdf98441dd45224c039e069d3b8 /xorg-server/dix/main.c
parent405ae9defaaa03d4d305b6264a744107c3dd460d (diff)
parentc29d91cfd8df084f16d0d2dfa82c3a86f7719a73 (diff)
downloadvcxsrv-98fa64178af8ad608e19391053b40b0772466c64.tar.gz
vcxsrv-98fa64178af8ad608e19391053b40b0772466c64.tar.bz2
vcxsrv-98fa64178af8ad608e19391053b40b0772466c64.zip
Merge remote-tracking branch 'origin/released'
Conflicts: xorg-server/dix/dispatch.c xorg-server/include/misc.h
Diffstat (limited to 'xorg-server/dix/main.c')
-rw-r--r--xorg-server/dix/main.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/xorg-server/dix/main.c b/xorg-server/dix/main.c
index b8ee88f18..cdca10250 100644
--- a/xorg-server/dix/main.c
+++ b/xorg-server/dix/main.c
@@ -251,6 +251,12 @@ main(int argc, char *argv[], char *envp[])
FatalError("no screens found");
InitExtensions(argc, argv);
+ for (i = 0; i < screenInfo.numGPUScreens; i++) {
+ ScreenPtr pScreen = screenInfo.gpuscreens[i];
+ if (!CreateScratchPixmapsForScreen(pScreen))
+ FatalError("failed to create scratch pixmaps");
+ }
+
for (i = 0; i < screenInfo.numScreens; i++) {
ScreenPtr pScreen = screenInfo.screens[i];
@@ -385,6 +391,15 @@ main(int argc, char *argv[], char *envp[])
screenInfo.numScreens = i;
}
+ for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
+ ScreenPtr pScreen = screenInfo.gpuscreens[i];
+ FreeScratchPixmapsForScreen(pScreen);
+ (*pScreen->CloseScreen) (pScreen);
+ dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
+ free(pScreen);
+ screenInfo.numGPUScreens = i;
+ }
+
ReleaseClientIds(serverClient);
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
serverClient->devPrivates = NULL;