dix: move screen destruction loop into dixFreeAllScreens()
Consolidate the screen destruction code in its own function and so move it out of the big main loop. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
6ca37d6c8c
commit
968478e5aa
|
@ -255,6 +255,6 @@ extern Bool enableBackingStore;
|
||||||
/* in generated BuiltInAtoms.c */
|
/* in generated BuiltInAtoms.c */
|
||||||
void MakePredeclaredAtoms(void);
|
void MakePredeclaredAtoms(void);
|
||||||
|
|
||||||
void dixFreeScreen(ScreenPtr pScreen);
|
void dixFreeAllScreens(void);
|
||||||
|
|
||||||
#endif /* _XSERVER_DIX_PRIV_H */
|
#endif /* _XSERVER_DIX_PRIV_H */
|
||||||
|
|
14
dix/main.c
14
dix/main.c
|
@ -314,20 +314,8 @@ dix_main(int argc, char *argv[], char *envp[])
|
||||||
screenInfo.screens[i]->root = NullWindow;
|
screenInfo.screens[i]->root = NullWindow;
|
||||||
|
|
||||||
CloseDownDevices();
|
CloseDownDevices();
|
||||||
|
|
||||||
CloseDownEvents();
|
CloseDownEvents();
|
||||||
|
dixFreeAllScreens();
|
||||||
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
|
|
||||||
dixFreeScreen(screenInfo.gpuscreens[i]);
|
|
||||||
screenInfo.numGPUScreens = i;
|
|
||||||
}
|
|
||||||
memset(&screenInfo.numGPUScreens, 0, sizeof(screenInfo.numGPUScreens));
|
|
||||||
|
|
||||||
for (i = screenInfo.numScreens - 1; i >= 0; i--) {
|
|
||||||
dixFreeScreen(screenInfo.screens[i]);
|
|
||||||
screenInfo.numScreens = i;
|
|
||||||
}
|
|
||||||
memset(&screenInfo.screens, 0, sizeof(screenInfo.numGPUScreens));
|
|
||||||
|
|
||||||
ReleaseClientIds(serverClient);
|
ReleaseClientIds(serverClient);
|
||||||
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
|
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
|
||||||
|
|
17
dix/screen.c
17
dix/screen.c
|
@ -9,7 +9,7 @@
|
||||||
#include "include/screenint.h"
|
#include "include/screenint.h"
|
||||||
#include "include/scrnintstr.h"
|
#include "include/scrnintstr.h"
|
||||||
|
|
||||||
void dixFreeScreen(ScreenPtr pScreen)
|
static void dixFreeScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
if (!pScreen)
|
if (!pScreen)
|
||||||
return;
|
return;
|
||||||
|
@ -21,3 +21,18 @@ void dixFreeScreen(ScreenPtr pScreen)
|
||||||
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
||||||
free(pScreen);
|
free(pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dixFreeAllScreens(void)
|
||||||
|
{
|
||||||
|
for (int i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
|
||||||
|
dixFreeScreen(screenInfo.gpuscreens[i]);
|
||||||
|
screenInfo.numGPUScreens = i;
|
||||||
|
}
|
||||||
|
memset(&screenInfo.numGPUScreens, 0, sizeof(screenInfo.numGPUScreens));
|
||||||
|
|
||||||
|
for (int i = screenInfo.numScreens - 1; i >= 0; i--) {
|
||||||
|
dixFreeScreen(screenInfo.screens[i]);
|
||||||
|
screenInfo.numScreens = i;
|
||||||
|
}
|
||||||
|
memset(&screenInfo.screens, 0, sizeof(screenInfo.numGPUScreens));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue