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 <[email protected]> --- dix/main.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dix/main.c b/dix/main.c index 42f517d..fb935c9 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; -- 1.7.10.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
