dix: consolidate screen destruction in dixFreeScreen()
Consolidate duplicated screen destruction logic into new function dixFreeScreen(). Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
14de20ce58
commit
a110b3e02e
|
@ -268,6 +268,8 @@ extern Bool enableBackingStore;
|
|||
/* in generated BuiltInAtoms.c */
|
||||
void MakePredeclaredAtoms(void);
|
||||
|
||||
void dixFreeScreen(ScreenPtr pScreen);
|
||||
|
||||
/*
|
||||
* @brief mark event ID as critical
|
||||
* @param event the event to add to the critical events bitmap
|
||||
|
|
15
dix/main.c
15
dix/main.c
|
@ -325,23 +325,16 @@ dix_main(int argc, char *argv[], char *envp[])
|
|||
CloseDownEvents();
|
||||
|
||||
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
|
||||
ScreenPtr pScreen = screenInfo.gpuscreens[i];
|
||||
dixFreeScreenSpecificPrivates(pScreen);
|
||||
(*pScreen->CloseScreen) (pScreen);
|
||||
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
||||
free(pScreen);
|
||||
dixFreeScreen(screenInfo.gpuscreens[i]);
|
||||
screenInfo.numGPUScreens = i;
|
||||
}
|
||||
memset(&screenInfo.numGPUScreens, 0, sizeof(screenInfo.numGPUScreens));
|
||||
|
||||
for (i = screenInfo.numScreens - 1; i >= 0; i--) {
|
||||
FreeGCperDepth(screenInfo.screens[i]);
|
||||
dixDestroyPixmap(screenInfo.screens[i]->defaultStipple, 0);
|
||||
dixFreeScreenSpecificPrivates(screenInfo.screens[i]);
|
||||
(*screenInfo.screens[i]->CloseScreen) (screenInfo.screens[i]);
|
||||
dixFreePrivates(screenInfo.screens[i]->devPrivates, PRIVATE_SCREEN);
|
||||
free(screenInfo.screens[i]);
|
||||
dixFreeScreen(screenInfo.screens[i]);
|
||||
screenInfo.numScreens = i;
|
||||
}
|
||||
memset(&screenInfo.screens, 0, sizeof(screenInfo.numGPUScreens));
|
||||
|
||||
ReleaseClientIds(serverClient);
|
||||
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);
|
||||
|
|
|
@ -28,6 +28,7 @@ srcs_dix = [
|
|||
'registry.c',
|
||||
'resource.c',
|
||||
'selection.c',
|
||||
'screen.c',
|
||||
'swaprep.c',
|
||||
'swapreq.c',
|
||||
'tables.c',
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/* SPDX-License-Identifier: MIT OR X11
|
||||
*
|
||||
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||
*/
|
||||
#include <dix-config.h>
|
||||
|
||||
#include "dix/dix_priv.h"
|
||||
#include "dix/gc_priv.h"
|
||||
#include "include/screenint.h"
|
||||
#include "include/scrnintstr.h"
|
||||
|
||||
void dixFreeScreen(ScreenPtr pScreen)
|
||||
{
|
||||
if (!pScreen)
|
||||
return;
|
||||
|
||||
FreeGCperDepth(pScreen);
|
||||
dixDestroyPixmap(pScreen->defaultStipple, 0);
|
||||
dixFreeScreenSpecificPrivates(pScreen);
|
||||
pScreen->CloseScreen(pScreen);
|
||||
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
||||
free(pScreen);
|
||||
}
|
Loading…
Reference in New Issue