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 <keithp@keithp.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
19772670e3
commit
288b87e42c
18
dix/main.c
18
dix/main.c
|
@ -331,6 +331,15 @@ main(int argc, char *argv[], char *envp[])
|
||||||
|
|
||||||
CloseDownEvents();
|
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--) {
|
for (i = screenInfo.numScreens - 1; i >= 0; i--) {
|
||||||
FreeScratchPixmapsForScreen(screenInfo.screens[i]);
|
FreeScratchPixmapsForScreen(screenInfo.screens[i]);
|
||||||
FreeGCperDepth(i);
|
FreeGCperDepth(i);
|
||||||
|
@ -342,15 +351,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
screenInfo.numScreens = i;
|
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);
|
ReleaseClientIds(serverClient);
|
||||||
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
|
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
|
||||||
serverClient->devPrivates = NULL;
|
serverClient->devPrivates = NULL;
|
||||||
|
|
Loading…
Reference in New Issue