/* SPDX-License-Identifier: MIT OR X11 * * Copyright © 2024 Enrico Weigelt, metux IT consult */ #include #include "dix/dix_priv.h" #include "dix/gc_priv.h" #include "include/screenint.h" #include "include/scrnintstr.h" static 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); } 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)); }