From 288b87e42cbb5db34cda848143655e84af8455da Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 7 Aug 2012 17:49:47 -0700 Subject: [PATCH] Close GPU screens before core screens This should make cleaning up the GPU screens easier as the core screens they are associated with will still be around. Signed-off-by: Keith Packard Reviewed-by: Dave Airlie --- dix/main.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dix/main.c b/dix/main.c index 42f517dfd..fb935c969 100644 --- a/dix/main.c +++ b/dix/main.c @@ -331,6 +331,15 @@ main(int argc, char *argv[], char *envp[]) CloseDownEvents(); + 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; + } + for (i = screenInfo.numScreens - 1; i >= 0; i--) { FreeScratchPixmapsForScreen(screenInfo.screens[i]); FreeGCperDepth(i); @@ -342,15 +351,6 @@ 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;