From 5532d63488ec45953ff7f925cfb4f87adb3b04a0 Mon Sep 17 00:00:00 2001 From: Tomas Carnecky Date: Mon, 4 Aug 2008 23:06:08 +0300 Subject: Redefine WindowTable as a fixed array Instead of xalloc'ing it every server generation. The array is always the same size (MAXSCREENS), anyway. --- Xext/mbufbf.c | 3 +-- dix/events.c | 1 - dix/globals.c | 2 +- dix/main.c | 7 +------ hw/kdrive/src/kdrive.c | 1 - hw/kdrive/src/kdrive.h | 3 +-- hw/xfree86/dixmods/extmod/xf86vmode.c | 3 +-- include/globals.h | 2 +- 8 files changed, 6 insertions(+), 16 deletions(-) diff --git a/Xext/mbufbf.c b/Xext/mbufbf.c index afa6177ab..e929ab5fd 100644 --- a/Xext/mbufbf.c +++ b/Xext/mbufbf.c @@ -47,6 +47,7 @@ in this Software without prior written authorization from The Open Group. #include "gcstruct.h" #include "inputstr.h" #include "validate.h" +#include "globals.h" #include #define _MULTIBUF_SERVER_ /* don't want Xlib structures */ @@ -199,8 +200,6 @@ static Bool bufChangeWindowAttributes(); static void bufClearToBackground(); static void bufCopyWindow(); -extern WindowPtr *WindowTable; - static Bool bufMultibufferInit(pScreen, pMBScreen) ScreenPtr pScreen; diff --git a/dix/events.c b/dix/events.c index d6b3ecb1f..f04433b65 100644 --- a/dix/events.c +++ b/dix/events.c @@ -150,7 +150,6 @@ typedef const char *string; #endif #ifdef XEVIE -extern WindowPtr *WindowTable; extern int xevieFlag; extern int xevieClientIndex; extern DeviceIntPtr xeviemouse; diff --git a/dix/globals.c b/dix/globals.c index 210c7849c..d3dd33119 100644 --- a/dix/globals.c +++ b/dix/globals.c @@ -83,7 +83,7 @@ _X_EXPORT ClientPtr serverClient; _X_EXPORT int currentMaxClients; /* current size of clients array */ _X_EXPORT long maxBigRequestSize = MAX_BIG_REQUEST_SIZE; -_X_EXPORT WindowPtr *WindowTable; +_X_EXPORT WindowPtr WindowTable[MAXSCREENS]; _X_EXPORT unsigned long globalSerialNumber = 0; _X_EXPORT unsigned long serverGeneration = 0; diff --git a/dix/main.c b/dix/main.c index ab6ca5728..c34bc8a3c 100644 --- a/dix/main.c +++ b/dix/main.c @@ -305,9 +305,6 @@ int main(int argc, char *argv[], char *envp[]) SetInputCheck(&alwaysCheckForInput[0], &alwaysCheckForInput[1]); screenInfo.arraySize = MAXSCREENS; screenInfo.numScreens = 0; - WindowTable = (WindowPtr *)xalloc(MAXSCREENS * sizeof(WindowPtr)); - if (!WindowTable) - FatalError("couldn't create root window table"); InitAtoms(); InitEvents(); @@ -417,7 +414,7 @@ int main(int argc, char *argv[], char *envp[]) config_fini(); - memset(WindowTable, 0, MAXSCREENS * sizeof(WindowPtr)); + memset(WindowTable, 0, sizeof(WindowTable)); CloseDownDevices(); CloseDownEvents(); @@ -431,8 +428,6 @@ int main(int argc, char *argv[], char *envp[]) xfree(screenInfo.screens[i]); screenInfo.numScreens = i; } - xfree(WindowTable); - WindowTable = NULL; FreeFonts(); FreeAuditTimer(); diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c index e31cc25d9..754b94291 100644 --- a/hw/kdrive/src/kdrive.c +++ b/hw/kdrive/src/kdrive.c @@ -93,7 +93,6 @@ static Bool kdCaughtSignal = FALSE; */ KdOsFuncs *kdOsFuncs; -extern WindowPtr *WindowTable; void KdSetRootClip (ScreenPtr pScreen, BOOL enable) diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h index e3878e223..3987cb00b 100644 --- a/hw/kdrive/src/kdrive.h +++ b/hw/kdrive/src/kdrive.h @@ -43,13 +43,12 @@ #include "fboverlay.h" #include "shadow.h" #include "randrstr.h" +#include "globals.h" #ifdef XKB #include #endif -extern WindowPtr *WindowTable; - #define KD_DPMS_NORMAL 0 #define KD_DPMS_STANDBY 1 #define KD_DPMS_SUSPEND 2 diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c index 91d5865d1..559f18b64 100644 --- a/hw/xfree86/dixmods/extmod/xf86vmode.c +++ b/hw/xfree86/dixmods/extmod/xf86vmode.c @@ -48,6 +48,7 @@ from Kaleb S. KEITHLEY #include "swaprep.h" #include "xf86.h" #include "vidmodeproc.h" +#include "globals.h" #define DEFAULT_XF86VIDMODE_VERBOSITY 3 @@ -122,8 +123,6 @@ static void SXF86VidModeNotifyEvent(); xXF86VidModeNotifyEvent * /* to */ ); -extern WindowPtr *WindowTable; - static RESTYPE EventType; /* resource type for event masks */ typedef struct _XF86VidModeEvent *XF86VidModeEventPtr; diff --git a/include/globals.h b/include/globals.h index a95096f81..607bc4805 100644 --- a/include/globals.h +++ b/include/globals.h @@ -20,7 +20,7 @@ extern int monitorResolution; extern int defaultColorVisualClass; extern Bool Must_have_memory; -extern WindowPtr *WindowTable; +extern WindowPtr WindowTable[MAXSCREENS]; extern int GrabInProgress; extern Bool noTestExtensions; -- cgit v1.2.3