summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Carnecky <tom@dbservice.com>2008-08-28 18:05:40 -0400
committerEamon Walsh <ewalsh@tycho.nsa.gov>2008-08-28 18:05:40 -0400
commitebea78cdba0ff14a397239ee1936bd254c181e1b (patch)
tree3937720753cc112aaf9eb71ba0dcb39674362b98
parentec7907f8fa04dcff2649cc4846975844314f737e (diff)
Prepare for array-index based devPrivates.
TODO: static indices can be made just an int; some indices can be combined.
-rw-r--r--Xext/geext.c3
-rw-r--r--Xext/mbuf.c6
-rw-r--r--Xext/panoramiX.c6
-rw-r--r--Xext/saver.c3
-rw-r--r--Xext/security.c3
-rw-r--r--Xext/shm.c3
-rw-r--r--Xext/xevie.c4
-rw-r--r--Xext/xselinux.c9
-rw-r--r--Xext/xvmain.c3
-rw-r--r--Xext/xvmc.c5
-rw-r--r--Xi/extinit.c3
-rw-r--r--composite/compext.c3
-rw-r--r--composite/compinit.c9
-rwxr-xr-xdamageext/damageext.c4
-rw-r--r--dbe/dbe.c6
-rw-r--r--dbe/midbe.c9
-rw-r--r--dix/devices.c6
-rw-r--r--dix/events.c3
-rw-r--r--dix/window.c3
-rw-r--r--exa/exa.c6
-rw-r--r--fb/fballpriv.c11
-rw-r--r--fb/fboverlay.c3
-rw-r--r--glx/glxext.c3
-rw-r--r--glx/glxscreens.c3
-rw-r--r--hw/dmx/dmxscrinit.c19
-rw-r--r--hw/kdrive/ephyr/ephyrdriext.c6
-rw-r--r--hw/kdrive/src/kdrive.c3
-rw-r--r--hw/kdrive/src/kxv.c7
-rw-r--r--hw/xfree86/common/xf86DGA.c5
-rw-r--r--hw/xfree86/common/xf86DPMS.c5
-rw-r--r--hw/xfree86/common/xf86Globals.c9
-rw-r--r--hw/xfree86/common/xf86RAC.c6
-rw-r--r--hw/xfree86/common/xf86RandR.c5
-rw-r--r--hw/xfree86/common/xf86VidMode.c5
-rw-r--r--hw/xfree86/common/xf86cmap.c8
-rw-r--r--hw/xfree86/common/xf86fbman.c8
-rw-r--r--hw/xfree86/common/xf86sbusBus.c3
-rw-r--r--hw/xfree86/common/xf86xv.c6
-rw-r--r--hw/xfree86/common/xf86xvmc.c3
-rw-r--r--hw/xfree86/dixmods/extmod/xf86dga2.c3
-rw-r--r--hw/xfree86/dixmods/extmod/xf86vmode.c8
-rw-r--r--hw/xfree86/dri/dri.c7
-rw-r--r--hw/xfree86/dri2/dri2.c9
-rw-r--r--hw/xfree86/exa/examodule.c3
-rw-r--r--hw/xfree86/modes/xf86RandR12.c3
-rw-r--r--hw/xfree86/ramdac/xf86Cursor.c3
-rw-r--r--hw/xfree86/shadowfb/shadow.c6
-rw-r--r--hw/xfree86/xaa/xaaInit.c9
-rw-r--r--hw/xfree86/xaa/xaaOverlayDF.c3
-rw-r--r--hw/xfree86/xaa/xaaStateChange.c3
-rw-r--r--hw/xfree86/xaa/xaaWrapper.c6
-rw-r--r--hw/xnest/GC.c3
-rw-r--r--hw/xnest/Pixmap.c3
-rw-r--r--hw/xnest/Screen.c3
-rw-r--r--hw/xnest/Window.c3
-rw-r--r--hw/xquartz/darwin.c3
-rw-r--r--hw/xquartz/quartz.c3
-rw-r--r--hw/xquartz/xpr/dri.c9
-rw-r--r--hw/xquartz/xpr/xprCursor.c3
-rw-r--r--hw/xwin/winglobals.c15
-rw-r--r--mi/mibank.c7
-rw-r--r--mi/midispcur.c7
-rw-r--r--mi/mioverlay.c6
-rw-r--r--mi/mipointer.c6
-rw-r--r--mi/miscrinit.c6
-rw-r--r--mi/misprite.c6
-rw-r--r--miext/cw/cw.c12
-rwxr-xr-xmiext/damage/damage.c12
-rw-r--r--miext/rootless/rootlessScreen.c12
-rw-r--r--miext/shadow/shadow.c3
-rw-r--r--randr/randr.c6
-rw-r--r--record/record.c3
-rw-r--r--render/animcur.c4
-rw-r--r--render/picture.c6
-rw-r--r--render/render.c3
-rwxr-xr-xxfixes/cursor.c4
-rwxr-xr-xxfixes/xfixes.c4
-rw-r--r--xkb/xkbActions.c3
78 files changed, 287 insertions, 146 deletions
diff --git a/Xext/geext.c b/Xext/geext.c
index 171fda160..8de4e7cb1 100644
--- a/Xext/geext.c
+++ b/Xext/geext.c
@@ -40,7 +40,8 @@
int GEEventBase;
int GEErrorBase;
-DevPrivateKey GEClientPrivateKey = &GEClientPrivateKey;
+static int GEClientPrivateKeyIndex;
+DevPrivateKey GEClientPrivateKey = &GEClientPrivateKeyIndex;
int GEEventType; /* The opcode for all GenericEvents will have. */
int RT_GECLIENT = 0;
diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 08b933433..a23a4fa36 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -61,8 +61,10 @@ in this Software without prior written authorization from The Open Group.
static int MultibufferEventBase;
static int MultibufferErrorBase;
-static DevPrivateKey MultibufferScreenPrivKey = &MultibufferScreenPrivKey;
-static DevPrivateKey MultibufferWindowPrivKey = &MultibufferWindowPrivKey;
+static int MultibufferScreenPrivKeyIndex;
+static DevPrivateKey MultibufferScreenPrivKey = &MultibufferScreenPrivKeyIndex;
+static int MultibufferWindowPrivKeyIndex;
+static DevPrivateKey MultibufferWindowPrivKey = &MultibufferWindowPrivKeyIndex;
static void PerformDisplayRequest (
MultibuffersPtr * /* ppMultibuffers */,
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 17f587b1e..22b51aa71 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -107,8 +107,10 @@ static void PanoramiXResetProc(ExtensionEntry*);
int (* SavedProcVector[256]) (ClientPtr client) = { NULL, };
-static DevPrivateKey PanoramiXGCKey = &PanoramiXGCKey;
-static DevPrivateKey PanoramiXScreenKey = &PanoramiXScreenKey;
+static int PanoramiXGCKeyIndex;
+static DevPrivateKey PanoramiXGCKey = &PanoramiXGCKeyIndex;
+static int PanoramiXScreenKeyIndex;
+static DevPrivateKey PanoramiXScreenKey = &PanoramiXScreenKeyIndex;
typedef struct {
DDXPointRec clipOrg;
diff --git a/Xext/saver.c b/Xext/saver.c
index d74495bfa..0bdcb8b94 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -228,7 +228,8 @@ MakeScreenPrivate (
ScreenPtr /* pScreen */
);
-static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKey;
+static int ScreenPrivateKeyIndex;
+static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKeyIndex;
#define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr) \
dixLookupPrivate(&(s)->devPrivates, ScreenPrivateKey))
diff --git a/Xext/security.c b/Xext/security.c
index bd92600f6..e37906366 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -50,7 +50,8 @@ static RESTYPE RTEventClient;
static CallbackListPtr SecurityValidateGroupCallback = NULL;
/* Private state record */
-static DevPrivateKey stateKey = &stateKey;
+static int stateKeyIndex;
+static DevPrivateKey stateKey = &stateKeyIndex;
/* This is what we store as client security state */
typedef struct {
diff --git a/Xext/shm.c b/Xext/shm.c
index 312b9d109..a48d2bd5b 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -139,7 +139,8 @@ static ShmDescPtr Shmsegs;
static Bool sharedPixmaps;
static ShmFuncsPtr shmFuncs[MAXSCREENS];
static DestroyPixmapProcPtr destroyPixmap[MAXSCREENS];
-static DevPrivateKey shmPixmapPrivate = &shmPixmapPrivate;
+static int shmPixmapPrivateIndex;
+static DevPrivateKey shmPixmapPrivate = &shmPixmapPrivateIndex;
static ShmFuncs miFuncs = {NULL, NULL};
static ShmFuncs fbFuncs = {fbShmCreatePixmap, NULL};
diff --git a/Xext/xevie.c b/Xext/xevie.c
index bbbf04524..292f20761 100644
--- a/Xext/xevie.c
+++ b/Xext/xevie.c
@@ -77,9 +77,11 @@ DeviceIntPtr xeviemouse = NULL;
Mask xevieMask = 0;
int xevieEventSent = 0;
int xevieKBEventSent = 0;
-static DevPrivateKey xevieDevicePrivateKey = &xevieDevicePrivateKey;
static Bool xevieModifiersOn = FALSE;
+static int xevieDevicePrivateKeyIndex;
+static DevPrivateKey xevieDevicePrivateKey = &xevieDevicePrivateKeyIndex;
+
#define XEVIEINFO(dev) ((xevieDeviceInfoPtr) \
dixLookupPrivate(&(dev)->devPrivates, xevieDevicePrivateKey))
diff --git a/Xext/xselinux.c b/Xext/xselinux.c
index a47df03c2..2a8be0b6d 100644
--- a/Xext/xselinux.c
+++ b/Xext/xselinux.c
@@ -62,9 +62,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/* private state keys */
-static DevPrivateKey subjectKey = &subjectKey;
-static DevPrivateKey objectKey = &objectKey;
-static DevPrivateKey dataKey = &dataKey;
+static int subjectKeyIndex;
+static DevPrivateKey subjectKey = &subjectKeyIndex;
+static int objectKeyIndex;
+static DevPrivateKey objectKey = &objectKeyIndex;
+static int dataKeyIndex;
+static DevPrivateKey dataKey = &dataKeyIndex;
/* subject state (clients and devices only) */
typedef struct {
diff --git a/Xext/xvmain.c b/Xext/xvmain.c
index e92a248e8..fcca724b0 100644
--- a/Xext/xvmain.c
+++ b/Xext/xvmain.c
@@ -105,7 +105,8 @@ SOFTWARE.
#endif
#include "xvdisp.h"
-static DevPrivateKey XvScreenKey = &XvScreenKey;
+static int XvScreenKeyIndex;
+static DevPrivateKey XvScreenKey = &XvScreenKeyIndex;
unsigned long XvExtensionGeneration = 0;
unsigned long XvScreenGeneration = 0;
unsigned long XvResourceGeneration = 0;
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index dc1e7dd98..ad1b8abc0 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -34,7 +34,8 @@
#define DR_CLIENT_DRIVER_NAME_SIZE 48
#define DR_BUSID_SIZE 48
-static DevPrivateKey XvMCScreenKey = NULL;
+static int XvMCScreenKeyIndex;
+static DevPrivateKey XvMCScreenKey;
unsigned long XvMCGeneration = 0;
@@ -709,7 +710,7 @@ XvMCScreenInit(ScreenPtr pScreen, int num, XvMCAdaptorPtr pAdapt)
{
XvMCScreenPtr pScreenPriv;
- XvMCScreenKey = &XvMCScreenKey;
+ XvMCScreenKey = &XvMCScreenKeyIndex;
if(!(pScreenPriv = (XvMCScreenPtr)xalloc(sizeof(XvMCScreenRec))))
return BadAlloc;
diff --git a/Xi/extinit.c b/Xi/extinit.c
index cb1f3a435..d8714ba7c 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -352,7 +352,8 @@ Mask PropagateMask[MAX_DEVICES];
*
*/
-DevPrivateKey XIClientPrivateKey = &XIClientPrivateKey;
+static int XIClientPrivateKeyIndex;
+DevPrivateKey XIClientPrivateKey = &XIClientPrivateKeyIndex;
static XExtensionVersion thisversion = { XI_Present,
XI_2_Major,
diff --git a/composite/compext.c b/composite/compext.c
index 154f71909..c1544021c 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -51,7 +51,8 @@
#define SERVER_COMPOSITE_MINOR 4
static CARD8 CompositeReqCode;
-static DevPrivateKey CompositeClientPrivateKey = &CompositeClientPrivateKey;
+static int CompositeClientPrivateKeyIndex;
+static DevPrivateKey CompositeClientPrivateKey = &CompositeClientPrivateKeyIndex;
RESTYPE CompositeClientWindowType;
RESTYPE CompositeClientSubwindowsType;
RESTYPE CompositeClientOverlayType;
diff --git a/composite/compinit.c b/composite/compinit.c
index 7914a8d25..495188e59 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -46,9 +46,12 @@
#include "compint.h"
-DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKey;
-DevPrivateKey CompWindowPrivateKey = &CompWindowPrivateKey;
-DevPrivateKey CompSubwindowsPrivateKey = &CompSubwindowsPrivateKey;
+static int CompScreenPrivateKeyIndex;
+DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKeyIndex;
+static int CompWindowPrivateKeyIndex;
+DevPrivateKey CompWindowPrivateKey = &CompWindowPrivateKeyIndex;
+static int CompSubwindowsPrivateKeyIndex;
+DevPrivateKey CompSubwindowsPrivateKey = &CompSubwindowsPrivateKeyIndex;
static Bool
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 7dd328aba..4d91580ca 100755
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -29,10 +29,12 @@
static unsigned char DamageReqCode;
static int DamageEventBase;
static int DamageErrorBase;
-static DevPrivateKey DamageClientPrivateKey = &DamageClientPrivateKey;
static RESTYPE DamageExtType;
static RESTYPE DamageExtWinType;
+static int DamageClientPrivateKeyIndex;
+static DevPrivateKey DamageClientPrivateKey = &DamageClientPrivateKeyIndex;
+
/* Version of the damage extension supported by the server, as opposed to the
* DAMAGE_* defines from damageproto for what version the proto header
* supports.
diff --git a/dbe/dbe.c b/dbe/dbe.c
index d34708d38..1a08bdab9 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -62,8 +62,10 @@
static Bool (* DbeInitFunct[MAXSCREENS])(); /* pScreen, pDbeScreenPriv */
/* These are static globals copied to DBE's screen private for use by DDX */
-static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKey;
-static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKey;
+static int dbeScreenPrivKeyIndex;
+static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKeyIndex;
+static int dbeWindowPrivKeyIndex;
+static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKeyIndex;
/* These are static globals copied to DBE's screen private for use by DDX */
static RESTYPE dbeDrawableResType;
diff --git a/dbe/midbe.c b/dbe/midbe.c
index c02e591d0..f8a3acc87 100644
--- a/dbe/midbe.c
+++ b/dbe/midbe.c
@@ -60,11 +60,14 @@
#include <stdio.h>
-static DevPrivateKey miDbeWindowPrivPrivKey = &miDbeWindowPrivPrivKey;
+static int miDbeWindowPrivPrivKeyIndex;
+static DevPrivateKey miDbeWindowPrivPrivKey = &miDbeWindowPrivPrivKeyIndex;
static RESTYPE dbeDrawableResType;
static RESTYPE dbeWindowPrivResType;
-static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKey;
-static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKey;
+static int dbeScreenPrivKeyIndex;
+static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKeyIndex;
+static int dbeWindowPrivKeyIndex;
+static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKeyIndex;
/******************************************************************************
diff --git a/dix/devices.c b/dix/devices.c
index 2225e08a7..7e1ce3513 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -91,9 +91,11 @@ SOFTWARE.
* This file handles input device-related stuff.
*/
-DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKey;
+static int CoreDevicePrivateKeyIndex;
+DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKeyIndex;
/* Used to sture classes currently not in use by an MD */
-DevPrivateKey UnusedClassesPrivateKey = &UnusedClassesPrivateKey;
+static int UnusedClassesPrivateKeyIndex;
+DevPrivateKey UnusedClassesPrivateKey = &UnusedClassesPrivateKeyIndex;
/**
diff --git a/dix/events.c b/dix/events.c
index 7a79d292b..2947ff1aa 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -1504,7 +1504,8 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, Bool thisMode, Bool otherMode)
}
/* Only ever used if a grab is called on an attached slave device. */
-static DevPrivateKey GrabPrivateKey = &GrabPrivateKey;
+static int GrabPrivateKeyIndex;
+static DevPrivateKey GrabPrivateKey = &GrabPrivateKeyIndex;
typedef struct _GrabMemoryRec {
DeviceIntPtr oldmaster;
} GrabMemoryRec, *GrabMemoryPtr;
diff --git a/dix/window.c b/dix/window.c
index 9bcf546aa..b588f4466 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -154,7 +154,8 @@ _X_EXPORT int screenIsSaved = SCREEN_SAVER_OFF;
_X_EXPORT ScreenSaverStuffRec savedScreenInfo[MAXSCREENS];
-_X_EXPORT DevPrivateKey FocusPrivatesKey = &FocusPrivatesKey;
+static int FocusPrivatesKeyIndex;
+_X_EXPORT DevPrivateKey FocusPrivatesKey = &FocusPrivatesKeyIndex;
static Bool TileScreenSaver(int i, int kind);
diff --git a/exa/exa.c b/exa/exa.c
index 12c154960..677e2d52b 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -38,8 +38,10 @@
#include "exa.h"
#include "cw.h"
-DevPrivateKey exaScreenPrivateKey = &exaScreenPrivateKey;
-DevPrivateKey exaPixmapPrivateKey = &exaPixmapPrivateKey;
+static int exaScreenPrivateKeyIndex;
+DevPrivateKey exaScreenPrivateKey = &exaScreenPrivateKeyIndex;
+static int exaPixmapPrivateKeyIndex;
+DevPrivateKey exaPixmapPrivateKey = &exaPixmapPrivateKeyIndex;
static _X_INLINE void*
ExaGetPixmapAddress(PixmapPtr p)
diff --git a/fb/fballpriv.c b/fb/fballpriv.c
index 2e77289bb..c40796c11 100644
--- a/fb/fballpriv.c
+++ b/fb/fballpriv.c
@@ -27,18 +27,23 @@
#include "fb.h"
#ifdef FB_SCREEN_PRIVATE
-static DevPrivateKey fbScreenPrivateKey = &fbScreenPrivateKey;
+static int fbScreenPrivateKeyIndex;
+static DevPrivateKey fbScreenPrivateKey = &fbScreenPrivateKeyIndex;
DevPrivateKey fbGetScreenPrivateKey(void)
{
return fbScreenPrivateKey;
}
#endif
-static DevPrivateKey fbGCPrivateKey = &fbGCPrivateKey;
+
+static int fbGCPrivateKeyIndex;
+static DevPrivateKey fbGCPrivateKey = &fbGCPrivateKeyIndex;
DevPrivateKey fbGetGCPrivateKey(void)
{
return fbGCPrivateKey;
}
-static DevPrivateKey fbWinPrivateKey = &fbWinPrivateKey;
+
+static int fbWinPrivateKeyIndex;
+static DevPrivateKey fbWinPrivateKey = &fbWinPrivateKeyIndex;
DevPrivateKey fbGetWinPrivateKey(void)
{
return fbWinPrivateKey;
diff --git a/fb/fboverlay.c b/fb/fboverlay.c
index f9f7c52a3..1432cb6f0 100644
--- a/fb/fboverlay.c
+++ b/fb/fboverlay.c
@@ -33,7 +33,8 @@
#include "fboverlay.h"
#include "shmint.h"
-static DevPrivateKey fbOverlayScreenPrivateKey = &fbOverlayScreenPrivateKey;
+static int fbOverlayScreenPrivateKeyIndex;
+static DevPrivateKey fbOverlayScreenPrivateKey = &fbOverlayScreenPrivateKeyIndex;
DevPrivateKey fbOverlayGetScreenPrivateKey(void)
{
diff --git a/glx/glxext.c b/glx/glxext.c
index 6ba404fb1..c2171a823 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -54,7 +54,8 @@ RESTYPE __glXSwapBarrierRes;
*/
xGLXSingleReply __glXReply;
-static DevPrivateKey glxClientPrivateKey = &glxClientPrivateKey;
+static int glxClientPrivateKeyIndex;
+static DevPrivateKey glxClientPrivateKey = &glxClientPrivateKeyIndex;
/*
** Client that called into GLX dispatch.
diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 505f79754..d928bdfb8 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -48,7 +48,8 @@
#include "glxutil.h"
#include "glxext.h"
-static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKey;
+static int glxScreenPrivateKeyIndex;
+static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
const char GLServerVersion[] = "1.4";
static const char GLServerExtensions[] =
diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c
index 0e49e9677..736075094 100644
--- a/hw/dmx/dmxscrinit.c
+++ b/hw/dmx/dmxscrinit.c
@@ -67,15 +67,22 @@ static Bool dmxSaveScreen(ScreenPtr pScreen, int what);
static unsigned long dmxGeneration;
static unsigned long *dmxCursorGeneration;
+static int dmxGCPrivateKeyIndex;
DevPrivateKey dmxGCPrivateKey = &dmxGCPrivateKey; /**< Private index for GCs */
-DevPrivateKey dmxWinPrivateKey = &dmxWinPrivateKey; /**< Private index for Windows */
-DevPrivateKey dmxPixPrivateKey = &dmxPixPrivateKey; /**< Private index for Pixmaps */
+static int dmxWinPrivateKeyIndex;
+DevPrivateKey dmxWinPrivateKey = &dmxWinPrivateKeyIndex; /**< Private index for Windows */
+static int dmxPixPrivateKeyIndex;
+DevPrivateKey dmxPixPrivateKey = &dmxPixPrivateKeyIndex; /**< Private index for Pixmaps */
int dmxFontPrivateIndex; /**< Private index for Fonts */
-DevPrivateKey dmxScreenPrivateKey = &dmxScreenPrivateKey; /**< Private index for Screens */
-DevPrivateKey dmxColormapPrivateKey = &dmxColormapPrivateKey; /**< Private index for Colormaps */
+static int dmxScreenPrivateKeyIndex;
+DevPrivateKey dmxScreenPrivateKey = &dmxScreenPrivateKeyIndex; /**< Private index for Screens */
+static int dmxColormapPrivateKeyIndex;
+DevPrivateKey dmxColormapPrivateKey = &dmxColormapPrivateKeyIndex; /**< Private index for Colormaps */
#ifdef RENDER
-DevPrivateKey dmxPictPrivateKey = &dmxPictPrivateKey; /**< Private index for Picts */
-DevPrivateKey dmxGlyphSetPrivateKey = &dmxGlyphSetPrivateKey; /**< Private index for GlyphSets */
+static int dmxPictPrivateKeyIndex;
+DevPrivateKey dmxPictPrivateKey = &dmxPictPrivateKeyIndex; /**< Private index for Picts */
+static int dmxGlyphSetPrivateKeyIndex;
+DevPrivateKey dmxGlyphSetPrivateKey = &dmxGlyphSetPrivateKeyIndex; /**< Private index for GlyphSets */
#endif
/** Initialize the parts of screen \a idx that require access to the
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 05cecf478..a906ad170 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -111,8 +111,10 @@ static Bool findWindowPairFromLocal (WindowPtr a_local,
static unsigned char DRIReqCode = 0;
-static DevPrivateKey ephyrDRIWindowKey = &ephyrDRIWindowKey;
-static DevPrivateKey ephyrDRIScreenKey = &ephyrDRIScreenKey;
+static int ephyrDRIWindowKeyIndex;
+static DevPrivateKey ephyrDRIWindowKey = &ephyrDRIWindowKeyIndex;
+static int ephyrDRIScreenKeyIndex;
+static DevPrivateKey ephyrDRIScreenKey = &ephyrDRIScreenKeyIndex;
#define GET_EPHYR_DRI_WINDOW_PRIV(win) ((EphyrDRIWindowPrivPtr) \
dixLookupPrivate(&(win)->devPrivates, ephyrDRIWindowKey))
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index 9e27840b7..1478a944d 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -67,7 +67,8 @@ KdDepths kdDepths[] = {
#define KD_DEFAULT_BUTTONS 5
-DevPrivateKey kdScreenPrivateKey = &kdScreenPrivateKey;
+static int kdScreenPrivateKeyIndex;
+DevPrivateKey kdScreenPrivateKey = &kdScreenPrivateKeyIndex;
unsigned long kdGeneration;
Bool kdVideoTest;
diff --git a/hw/kdrive/src/kxv.c b/hw/kdrive/src/kxv.c
index 83ca3935f..9a74654af 100644
--- a/hw/kdrive/src/kxv.c
+++ b/hw/kdrive/src/kxv.c
@@ -103,9 +103,10 @@ static void KdXVClipNotify(WindowPtr pWin, int dx, int dy);
/* misc */
static Bool KdXVInitAdaptors(ScreenPtr, KdVideoAdaptorPtr*, int);
-
-DevPrivateKey KdXVWindowKey = &KdXVWindowKey;
-DevPrivateKey KdXvScreenKey = &KdXvScreenKey;
+static int KdXVWindowKeyIndex;
+DevPrivateKey KdXVWindowKey = &KdXVWindowKeyIndex;
+static int KdXvScreenKeyIndex;
+DevPrivateKey KdXvScreenKey = &KdXvScreenKeyIndex;
static unsigned long KdXVGeneration = 0;
static unsigned long PortResource = 0;
diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index a7e24a65f..4dd31d899 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -50,7 +50,8 @@
#include "mi.h"
-static DevPrivateKey DGAScreenKey = NULL;
+static int DGAScreenKeyIndex;
+static DevPrivateKey DGAScreenKey;
static int mieq_installed = 0;
static Bool DGACloseScreen(int i, ScreenPtr pScreen);
@@ -116,7 +117,7 @@ DGAInit(
if(!modes || num <= 0)
return FALSE;
- DGAScreenKey = &DGAScreenKey;
+ DGAScreenKey = &DGAScreenKeyIndex;
if(!(pScreenPriv = (DGAScreenPtr)xalloc(sizeof(DGAScreenRec))))
return FALSE;
diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
index 4fb901aae..5ee5e2451 100644
--- a/hw/xfree86/common/xf86DPMS.c
+++ b/hw/xfree86/common/xf86DPMS.c
@@ -47,7 +47,8 @@
#ifdef DPMSExtension
-static DevPrivateKey DPMSKey = NULL;
+static int DPMSKeyIndex;
+static DevPrivateKey DPMSKey;
static Bool DPMSClose(int i, ScreenPtr pScreen);
static int DPMSCount = 0;
#endif
@@ -62,7 +63,7 @@ xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
pointer DPMSOpt;
MessageType enabled_from = X_INFO;
- DPMSKey = &DPMSKey;
+ DPMSKey = &DPMSKeyIndex;
if (DPMSDisabledSwitch)
DPMSEnabled = FALSE;
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index 23626296a..dffe98863 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -47,10 +47,13 @@
/* Globals that video drivers may access */
/* Index into pScreen.devPrivates */
-DevPrivateKey xf86CreateRootWindowKey = &xf86CreateRootWindowKey;
+static int xf86CreateRootWindowKeyIndex;
+DevPrivateKey xf86CreateRootWindowKey = &xf86CreateRootWindowKeyIndex;
/* Index of ScrnInfo in pScreen.devPrivates */
-_X_EXPORT DevPrivateKey xf86ScreenKey = &xf86ScreenKey;
-_X_EXPORT DevPrivateKey xf86PixmapKey = &xf86PixmapKey;
+static int xf86ScreenKeyIndex;
+_X_EXPORT DevPrivateKey xf86ScreenKey = &xf86ScreenKeyIndex;
+static int xf86PixmapKeyIndex;
+_X_EXPORT DevPrivateKey xf86PixmapKey = &xf86PixmapKeyIndex;
_X_EXPORT ScrnInfoPtr *xf86Screens = NULL; /* List of ScrnInfos */
_X_EXPORT const unsigned char byte_reversed[256] =
{
diff --git a/hw/xfree86/common/xf86RAC.c b/hw/xfree86/common/xf86RAC.c
index 8215f9827..24d29e445 100644
--- a/hw/xfree86/common/xf86RAC.c
+++ b/hw/xfree86/common/xf86RAC.c
@@ -256,8 +256,10 @@ static miPointerSpriteFuncRec RACSpriteFuncs = {
RACSpriteMoveCursor
};
-static DevPrivateKey RACScreenKey = &RACScreenKey;
-static DevPrivateKey RACGCKey = &RACGCKey;
+static int RACScreenKeyIndex;
+static DevPrivateKey RACScreenKey = &RACScreenKeyIndex;
+static int RACGCKeyIndex;
+static DevPrivateKey RACGCKey = &RACGCKeyIndex;
Bool
diff --git a/hw/xfree86/common/xf86RandR.c b/hw/xfree86/common/xf86RandR.c
index 10ec37070..847191475 100644
--- a/hw/xfree86/common/xf86RandR.c
+++ b/hw/xfree86/common/xf86RandR.c
@@ -46,7 +46,8 @@ typedef struct _xf86RandRInfo {
Rotation rotation;
} XF86RandRInfoRec, *XF86RandRInfoPtr;
-static DevPrivateKey xf86RandRKey = NULL;
+static int xf86RandRKeyIndex;
+static DevPrivateKey xf86RandRKey;
#define XF86RANDRINFO(p) ((XF86RandRInfoPtr)dixLookupPrivate(&(p)->devPrivates, xf86RandRKey))
@@ -423,7 +424,7 @@ xf86RandRInit (ScreenPtr pScreen)
return TRUE;
#endif
- xf86RandRKey = &xf86RandRKey;
+ xf86RandRKey = &xf86RandRKeyIndex;
randrp = xalloc (sizeof (XF86RandRInfoRec));
if (!randrp)
diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c
index 9260bb57b..24fccd31b 100644
--- a/hw/xfree86/common/xf86VidMode.c
+++ b/hw/xfree86/common/xf86VidMode.c
@@ -47,7 +47,8 @@
#include "vidmodeproc.h"
#include "xf86cmap.h"
-static DevPrivateKey VidModeKey = NULL;
+static int VidModeKeyIndex;
+static DevPrivateKey VidModeKey;
static int VidModeCount = 0;
static Bool VidModeClose(int i, ScreenPtr pScreen);
@@ -72,7 +73,7 @@ VidModeExtensionInit(ScreenPtr pScreen)
return FALSE;
}
- VidModeKey = &VidModeKey;
+ VidModeKey = &VidModeKeyIndex;
if (!dixSetPrivate(&pScreen->devPrivates, VidModeKey,
xcalloc(sizeof(VidModeRec), 1))) {
diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c
index 8ae193a52..e57844764 100644
--- a/hw/xfree86/common/xf86cmap.c
+++ b/hw/xfree86/common/xf86cmap.c
@@ -101,8 +101,10 @@ typedef struct {
int overscan;
} CMapColormapRec, *CMapColormapPtr;
-static DevPrivateKey CMapScreenKey = NULL;
-static DevPrivateKey CMapColormapKey = &CMapColormapKey;
+static int CMapScreenKeyIndex;
+static DevPrivateKey CMapScreenKey;
+static int CMapColormapKeyIndex;
+static DevPrivateKey CMapColormapKey = &CMapColormapKeyIndex;
static void CMapInstallColormap(ColormapPtr);
static void CMapStoreColors(ColormapPtr, int, xColorItem *);
@@ -142,7 +144,7 @@ _X_EXPORT Bool xf86HandleColormaps(
if(!maxColors || !sigRGBbits || !loadPalette)
return FALSE;
- CMapScreenKey = &CMapScreenKey;
+ CMapScreenKey = &CMapScreenKeyIndex;
elements = 1 << sigRGBbits;
diff --git a/hw/xfree86/common/xf86fbman.c b/hw/xfree86/common/xf86fbman.c
index 9fd2e6c70..5471c58f0 100644
--- a/hw/xfree86/common/xf86fbman.c
+++ b/hw/xfree86/common/xf86fbman.c
@@ -42,14 +42,15 @@
#define DEBUG
*/
-static DevPrivateKey xf86FBManagerKey = NULL;
+static int xf86FBManagerKeyIndex;
+static DevPrivateKey xf86FBManagerKey;
_X_EXPORT Bool xf86RegisterOffscreenManager(
ScreenPtr pScreen,
FBManagerFuncsPtr funcs
){
- xf86FBManagerKey = &xf86FBManagerKey;
+ xf86FBManagerKey = &xf86FBManagerKeyIndex;
dixSetPrivate(&pScreen->devPrivates, xf86FBManagerKey, funcs);
return TRUE;
@@ -269,7 +270,8 @@ xf86PurgeUnlockedOffscreenAreas(ScreenPtr pScreen)
\************************************************************/
-static DevPrivateKey xf86FBScreenKey = &xf86FBScreenKey;
+static int xf86FBScreenKeyIndex;
+static DevPrivateKey xf86FBScreenKey = &xf86FBScreenKeyIndex;
typedef struct _FBLink {
FBArea area;
diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c
index 63d1cb31c..af2b14539 100644
--- a/hw/xfree86/common/xf86sbusBus.c
+++ b/hw/xfree86/common/xf86sbusBus.c
@@ -602,7 +602,8 @@ xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn, sbusDevicePtr psdp)
pScrn->virtualY = psdp->height;
}
-static DevPrivateKey sbusPaletteKey = &sbusPaletteKey;
+static sbusPaletteKeyIndex;
+static DevPrivateKey sbusPaletteKey = &sbusPaletteKeyIndex;
typedef struct _sbusCmap {
sbusDevicePtr psdp;
CloseScreenProcPtr CloseScreen;
diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
index 7483e20d2..b263f9bd3 100644
--- a/hw/xfree86/common/xf86xv.c
+++ b/hw/xfree86/common/xf86xv.c
@@ -110,8 +110,10 @@ static void xf86XVAdjustFrame(int index, int x, int y, int flags);
static Bool xf86XVInitAdaptors(ScreenPtr, XF86VideoAdaptorPtr*, int);
-static DevPrivateKey XF86XVWindowKey = &XF86XVWindowKey;
-DevPrivateKey XF86XvScreenKey;
+static int XF86XVWindowKeyIndex;
+static DevPrivateKey XF86XVWindowKey = &XF86XVWindowKeyIndex;
+static int XF86XvScreenKeyIndex;
+DevPrivateKey XF86XvScreenKey = &XF86XvScreenKeyIndex;
static unsigned long PortResource = 0;
DevPrivateKey (*XvGetScreenKeyProc)(void) = NULL;
diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c
index 05267a240..41ef0a0ca 100644
--- a/hw/xfree86/common/xf86xvmc.c
+++ b/hw/xfree86/common/xf86xvmc.c
@@ -56,7 +56,8 @@ typedef struct {
XvMCAdaptorPtr dixinfo;
} xf86XvMCScreenRec, *xf86XvMCScreenPtr;
-static DevPrivateKey XF86XvMCScreenKey = &XF86XvMCScreenKey;
+static int XF86XvMCScreenKeyIndex;
+static DevPrivateKey XF86XvMCScreenKey = &XF86XvMCScreenKeyIndex;
#define XF86XVMC_GET_PRIVATE(pScreen) (xf86XvMCScreenPtr) \
dixLookupPrivate(&(pScreen)->devPrivates, XF86XvMCScreenKey)
diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
index 295e05e9e..c12178f56 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
@@ -62,7 +62,8 @@ unsigned char DGAReqCode = 0;
int DGAErrorBase;
int DGAEventBase;
-static DevPrivateKey DGAClientPrivateKey = &DGAClientPrivateKey;
+static int DGAClientPrivateKeyIndex;
+static DevPrivateKey DGAClientPrivateKey = &DGAClientPrivateKeyIndex;
static int DGACallbackRefCount = 0;
/* This holds the client's version information */
diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
index 559f18b64..6485a0461 100644
--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
+++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
@@ -53,7 +53,8 @@ from Kaleb S. KEITHLEY
#define DEFAULT_XF86VIDMODE_VERBOSITY 3
static int VidModeErrorBase;
-static DevPrivateKey VidModeClientPrivateKey = &VidModeClientPrivateKey;
+static int VidModeClientPrivateKeyIndex;
+static DevPrivateKey VidModeClientPrivateKey = &VidModeClientPrivateKeyIndex;
/* This holds the client's version information */
typedef struct {
@@ -141,8 +142,9 @@ typedef struct _XF86VidModeScreenPrivate {
XF86VidModeEventPtr events;
Bool hasWindow;
} XF86VidModeScreenPrivateRec, *XF86VidModeScreenPrivatePtr;
-
-static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKey;
+
+static int ScreenPrivateKeyIndex;
+static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKeyIndex;
#define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr) \
dixLookupPrivate(&(s)->devPrivates, ScreenPrivateKey))
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index ac40e0fe0..d2599a9a8 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -79,8 +79,10 @@ extern Bool noPanoramiXExtension;
#endif
static int DRIEntPrivIndex = -1;
-static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKey;
-static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKey;
+static int DRIScreenPrivKeyIndex;
+static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKeyIndex;
+static int DRIWindowPrivKeyIndex;
+static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKeyIndex;
static unsigned long DRIGeneration = 0;
static unsigned int DRIDrawableValidationStamp = 0;
@@ -343,7 +345,6 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
pDRIEntPriv = DRI_ENT_PRIV(pScrn);
- DRIScreenPrivKey = &DRIScreenPrivKey;
if (DRIGeneration != serverGeneration)
DRIGeneration = serverGeneration;
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 74aef7196..a5aef9135 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -45,9 +45,12 @@
#include "xf86.h"
-static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKey;
-static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKey;
-static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKey;
+static int dri2ScreenPrivateKeyIndex;
+static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKeyIndex;
+static int dri2WindowPrivateKeyIndex;
+static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKeyIndex;
+static int dri2PixmapPrivateKeyIndex;
+static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKeyIndex;
typedef struct _DRI2DrawablePriv {
unsigned int refCount;
diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
index 4a8d8f26a..601288c73 100644
--- a/hw/xfree86/exa/examodule.c
+++ b/hw/xfree86/exa/examodule.c
@@ -42,7 +42,8 @@ typedef struct _ExaXorgScreenPrivRec {
OptionInfoPtr options;
} ExaXorgScreenPrivRec, *ExaXorgScreenPrivPtr;
-static DevPrivateKey exaXorgScreenPrivateKey = &exaXorgScreenPrivateKey;
+static int exaXorgScreenPrivateKeyIndex;
+static DevPrivateKey exaXorgScreenPrivateKey = &exaXorgScreenPrivateKeyIndex;
typedef enum {
EXAOPT_MIGRATION_HEURISTIC,
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index ac0b438d3..2ae8ea776 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -63,6 +63,7 @@ static Bool xf86RandR12CreateScreenResources12 (ScreenPtr pScreen);
static int xf86RandR12Generation;
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
+static int xf86RandR12KeyIndex;
static DevPrivateKey xf86RandR12Key;
#define XF86RANDRINFO(p) ((XF86RandRInfoPtr) \
dixLookupPrivate(&(p)->devPrivates, xf86RandR12Key))
@@ -499,7 +500,7 @@ xf86RandR12Init (ScreenPtr pScreen)
xf86RandR12Generation = serverGeneration;
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
- xf86RandR12Key = &xf86RandR12Key;
+ xf86RandR12Key = &xf86RandR12KeyIndex;
#else
xf86RandR12Index = AllocateScreenPrivateIndex();
#endif
diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
index be4fb908e..592eaadd8 100644
--- a/hw/xfree86/ramdac/xf86Cursor.c
+++ b/hw/xfree86/ramdac/xf86Cursor.c
@@ -18,7 +18,8 @@
#include "inputstr.h"
extern InputInfo inputInfo;
-DevPrivateKey xf86CursorScreenKey = &xf86CursorScreenKey;
+static int xf86CursorScreenKeyIndex;
+DevPrivateKey xf86CursorScreenKey = &xf86CursorScreenKeyIndex;
/* sprite functions */
diff --git a/hw/xfree86/shadowfb/shadow.c b/hw/xfree86/shadowfb/shadow.c
index 74beefb67..ff775efbd 100644
--- a/hw/xfree86/shadowfb/shadow.c
+++ b/hw/xfree86/shadowfb/shadow.c
@@ -94,8 +94,10 @@ typedef struct {
} ShadowGCRec, *ShadowGCPtr;
-static DevPrivateKey ShadowScreenKey = &ShadowScreenKey;
-static DevPrivateKey ShadowGCKey = &ShadowGCKey;
+static int ShadowScreenKeyIndex;
+static DevPrivateKey ShadowScreenKey = &ShadowScreenKeyIndex;
+static int ShadowGCKeyIndex;
+static DevPrivateKey ShadowGCKey = &ShadowGCKeyIndex;
#define GET_SCREEN_PRIVATE(pScreen) \
(ShadowScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, ShadowScreenKey)
diff --git a/hw/xfree86/xaa/xaaInit.c b/hw/xfree86/xaa/xaaInit.c
index 22a35a0a0..deb198946 100644
--- a/hw/xfree86/xaa/xaaInit.c
+++ b/hw/xfree86/xaa/xaaInit.c
@@ -39,9 +39,12 @@ static int XAASetDGAMode(int index, int num, DGADevicePtr devRet);
static void XAAEnableDisableFBAccess (int index, Bool enable);
static Bool XAAChangeWindowAttributes (WindowPtr pWin, unsigned long mask);
-static DevPrivateKey XAAScreenKey = &XAAScreenKey;
-static DevPrivateKey XAAGCKey = &XAAGCKey;
-static DevPrivateKey XAAPixmapKey = &XAAPixmapKey;
+static int XAAScreenKeyIndex;
+static DevPrivateKey XAAScreenKey = &XAAScreenKeyIndex;
+static int XAAGCKeyIndex;
+static DevPrivateKey XAAGCKey = &XAAGCKeyIndex;
+static int XAAPixmapKeyIndex;
+static DevPrivateKey XAAPixmapKey = &XAAPixmapKeyIndex;
DevPrivateKey XAAGetScreenKey(void) {
return XAAScreenKey;
diff --git a/hw/xfree86/xaa/xaaOverlayDF.c b/hw/xfree86/xaa/xaaOverlayDF.c
index 64ca998ee..8db816e1e 100644
--- a/hw/xfree86/xaa/xaaOverlayDF.c
+++ b/hw/xfree86/xaa/xaaOverlayDF.c
@@ -151,7 +151,8 @@ typedef struct {
int (*TiledFillChooser)(GCPtr);
} XAAOverlayRec, *XAAOverlayPtr;
-static DevPrivateKey XAAOverlayKey = &XAAOverlayKey;
+static int XAAOverlayKeyIndex;
+static DevPrivateKey XAAOverlayKey = &XAAOverlayKeyIndex;
#define GET_OVERLAY_PRIV(pScreen) \
(XAAOverlayPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAOverlayKey)
diff --git a/hw/xfree86/xaa/xaaStateChange.c b/hw/xfree86/xaa/xaaStateChange.c
index 443bda628..57d8aa318 100644
--- a/hw/xfree86/xaa/xaaStateChange.c
+++ b/hw/xfree86/xaa/xaaStateChange.c
@@ -274,7 +274,8 @@ typedef struct _XAAStateWrapRec {
#endif
} XAAStateWrapRec, *XAAStateWrapPtr;
-static DevPrivateKey XAAStateKey = &XAAStateKey;
+static int XAAStateKeyIndex;
+static DevPrivateKey XAAStateKey = &XAAStateKeyIndex;
/* Wrap functions start here */
#define GET_STATEPRIV_GC(pGC) XAAStateWrapPtr pStatePriv =\
diff --git a/hw/xfree86/xaa/xaaWrapper.c b/hw/xfree86/xaa/xaaWrapper.c
index 5d6ea05cf..88418946f 100644
--- a/hw/xfree86/xaa/xaaWrapper.c
+++ b/hw/xfree86/xaa/xaaWrapper.c
@@ -129,8 +129,10 @@ typedef struct _xaaWrapperGCPriv {
#define xaaWrapperGCPriv(pGC) xaaWrapperGCPrivPtr pGCPriv = xaaWrapperGetGCPriv(pGC)
-static DevPrivateKey xaaWrapperScrPrivateKey = &xaaWrapperScrPrivateKey;
-static DevPrivateKey xaaWrapperGCPrivateKey = &xaaWrapperGCPrivateKey;
+static int xaaWrapperScrPrivateKeyIndex;
+static DevPrivateKey xaaWrapperScrPrivateKey = &xaaWrapperScrPrivateKeyIndex;
+static int xaaWrapperGCPrivateKeyIndex;
+static DevPrivateKey xaaWrapperGCPrivateKey = &xaaWrapperGCPrivateKeyIndex;
static Bool
xaaWrapperCreateScreenResources(ScreenPtr pScreen)
diff --git a/hw/xnest/GC.c b/hw/xnest/GC.c
index 06e6e0205..65425e98f 100644
--- a/hw/xnest/GC.c
+++ b/hw/xnest/GC.c
@@ -35,7 +35,8 @@ is" without express or implied warranty.
#include "XNFont.h"
#include "Color.h"
-DevPrivateKey xnestGCPrivateKey = &xnestGCPrivateKey;
+static int xnestGCPrivateKeyIndex;
+DevPrivateKey xnestGCPrivateKey = &xnestGCPrivateKeyIndex;
static GCFuncs xnestFuncs = {
xnestValidateGC,
diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c
index 04311966d..08305b10b 100644
--- a/hw/xnest/Pixmap.c
+++ b/hw/xnest/Pixmap.c
@@ -33,7 +33,8 @@ is" without express or implied warranty.
#include "Screen.h"
#include "XNPixmap.h"
-DevPrivateKey xnestPixmapPrivateKey = &xnestPixmapPrivateKey;
+static int xnestPixmapPrivateKeyIndex;
+DevPrivateKey xnestPixmapPrivateKey = &xnestPixmapPrivateKeyIndex;
PixmapPtr
xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth,
diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c
index 4e8616dd5..ca903d7ac 100644
--- a/hw/xnest/Screen.c
+++ b/hw/xnest/Screen.c
@@ -45,7 +45,8 @@ is" without express or implied warranty.
Window xnestDefaultWindows[MAXSCREENS];
Window xnestScreenSaverWindows[MAXSCREENS];
-DevPrivateKey xnestCursorScreenKey = &xnestCursorScreenKey;
+static int xnestCursorScreenKeyIndex;
+DevPrivateKey xnestCursorScreenKey = &xnestCursorScreenKeyIndex;
ScreenPtr
xnestScreen(Window window)
diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c
index 23383e180..ae3487f4a 100644
--- a/hw/xnest/Window.c
+++ b/hw/xnest/Window.c
@@ -39,7 +39,8 @@ is" without express or implied warranty.
#include "Events.h"
#include "Args.h"
-DevPrivateKey xnestWindowPrivateKey = &xnestWindowPrivateKey;
+static int xnestWindowPrivateKeyIndex;
+DevPrivateKey xnestWindowPrivateKey = &xnestWindowPrivateKeyIndex;
static int
xnestFindWindowMatch(WindowPtr pWin, pointer ptr)
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index 8107beb9f..559bc8960 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -85,7 +85,8 @@ FILE *debug_log_fp = NULL;
* X server shared global variables
*/
int darwinScreensFound = 0;
-DevPrivateKey darwinScreenKey = &darwinScreenKey;
+static int darwinScreenKeyIndex;
+DevPrivateKey darwinScreenKey = &darwinScreenKeyIndex;
io_connect_t darwinParamConnect = 0;
int darwinEventReadFD = -1;
int darwinEventWriteFD = -1;
diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c
index c4b889ed0..b17e56170 100644
--- a/hw/xquartz/quartz.c
+++ b/hw/xquartz/quartz.c
@@ -71,7 +71,8 @@ int quartzUseAGL = 1;
int quartzEnableKeyEquivalents = 1;
int quartzServerVisible = TRUE;
int quartzServerQuitting = FALSE;
-DevPrivateKey quartzScreenKey = &quartzScreenKey;
+static int quartzScreenKeyIndex;
+DevPrivateKey quartzScreenKey = &quartzScreenKeyIndex;
int aquaMenuBarHeight = 0;
QuartzModeProcsPtr quartzProcs = NULL;
const char *quartzOpenGLBundle = NULL;
diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index 3aacb192d..5b79419dd 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -71,9 +71,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <AvailabilityMacros.h>
-static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKey;
-static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKey;
-static DevPrivateKey DRIPixmapPrivKey = &DRIPixmapPrivKey;
+static int DRIScreenPrivKeyIndex;
+static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKeyIndex;
+static int DRIWindowPrivKeyIndex;
+static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKeyIndex;
+static int DRIPixmapPrivKeyIndex;
+static DevPrivateKey DRIPixmapPrivKey = &DRIPixmapPrivKeyIndex;
static RESTYPE DRIDrawablePrivResType;
diff --git a/hw/xquartz/xpr/xprCursor.c b/hw/xquartz/xpr/xprCursor.c
index 76ab75c02..c1890a2e4 100644
--- a/hw/xquartz/xpr/xprCursor.c
+++ b/hw/xquartz/xpr/xprCursor.c
@@ -56,7 +56,8 @@ typedef struct {
miPointerSpriteFuncPtr spriteFuncs;
} QuartzCursorScreenRec, *QuartzCursorScreenPtr;
-static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKey;
+static int darwinCursorScreenKeyIndex;
+static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKeyIndex;
#define CURSOR_PRIV(pScreen) ((QuartzCursorScreenPtr) \
dixLookupPrivate(&pScreen->devPrivates, darwinCursorScreenKey))
diff --git a/hw/xwin/winglobals.c b/hw/xwin/winglobals.c
index fddada39e..3eb6091e6 100644
--- a/hw/xwin/winglobals.c
+++ b/hw/xwin/winglobals.c
@@ -44,11 +44,16 @@ int g_iLastScreen = -1;
#ifdef HAS_DEVWINDOWS
int g_fdMessageQueue = WIN_FD_INVALID;
#endif
-DevPrivateKey g_iScreenPrivateKey = &g_iScreenPrivateKey;
-DevPrivateKey g_iCmapPrivateKey = &g_iCmapPrivateKey;
-DevPrivateKey g_iGCPrivateKey = &g_iGCPrivateKey;
-DevPrivateKey g_iPixmapPrivateKey = &g_iPixmapPrivateKey;
-DevPrivateKey g_iWindowPrivateKey = &g_iWindowPrivateKey;
+static int g_iScreenPrivateKeyIndex;
+DevPrivateKey g_iScreenPrivateKey = &g_iScreenPrivateKeyIndex;
+static int g_iCmapPrivateKeyIndex;
+DevPrivateKey g_iCmapPrivateKey = &g_iCmapPrivateKeyIndex;
+static int g_iGCPrivateKeyIndex;
+DevPrivateKey g_iGCPrivateKey = &g_iGCPrivateKeyIndex;
+static int g_iPixmapPrivateKeyIndex;
+DevPrivateKey g_iPixmapPrivateKey = &g_iPixmapPrivateKeyIndex;
+static int g_iWindowPrivateKeyIndex;
+DevPrivateKey g_iWindowPrivateKey = &g_iWindowPrivateKeyIndex;
unsigned long g_ulServerGeneration = 0;
Bool g_fInitializedDefaultScreens = FALSE;
DWORD g_dwEnginesSupported = 0;
diff --git a/mi/mibank.c b/mi/mibank.c
index ea79e9d36..92288abef 100644
--- a/mi/mibank.c
+++ b/mi/mibank.c
@@ -175,8 +175,11 @@ typedef struct _miBankQueue
#define xalloc_ARRAY(atype, ntype) \
(atype *)xalloc((ntype) * sizeof(atype))
-static DevPrivateKey miBankScreenKey = &miBankScreenKey;
-static DevPrivateKey miBankGCKey = &miBankGCKey;
+static int miBankScreenKeyIndex;
+static DevPrivateKey miBankScreenKey = &miBankScreenKeyIndex;
+static int miBankGCKeyIndex;
+static DevPrivateKey miBankGCKey = &miBankGCKeyIndex;
+
static unsigned long miBankGeneration = 0;
#define BANK_SCRPRIVLVAL dixLookupPrivate(&pScreen->devPrivates, miBankScreenKey)
diff --git a/mi/midispcur.c b/mi/midispcur.c
index 1f2d8cf03..05352fc89 100644
--- a/mi/midispcur.c
+++ b/mi/midispcur.c
@@ -55,13 +55,14 @@ in this Software without prior written authorization from The Open Group.
# include "inputstr.h" /* for MAX_DEVICES */
/* per-screen private data */
-
-static DevPrivateKey miDCScreenKey = &miDCScreenKey;
+static int miDCScreenKeyIndex;
+static DevPrivateKey miDCScreenKey = &miDCScreenKeyIndex;
static Bool miDCCloseScreen(int index, ScreenPtr pScreen);
/* per device private data */
-static DevPrivateKey miDCSpriteKey = &miDCSpriteKey;
+static int miDCSpriteKeyIndex;
+static DevPrivateKey miDCSpriteKey = &miDCSpriteKeyIndex;
typedef struct {
GCPtr pSourceGC, pMaskGC;
diff --git a/mi/mioverlay.c b/mi/mioverlay.c
index 2fc583ed4..395b1aab2 100644
--- a/mi/mioverlay.c
+++ b/mi/mioverlay.c
@@ -54,8 +54,10 @@ typedef struct {
Bool copyUnderlay;
} miOverlayScreenRec, *miOverlayScreenPtr;
-static DevPrivateKey miOverlayWindowKey = &miOverlayWindowKey;
-static DevPrivateKey miOverlayScreenKey = &miOverlayScreenKey;
+static int miOverlayWindowKeyKeyIndex;
+static DevPrivateKey miOverlayWindowKey = &miOverlayWindowKeyKeyIndex;
+static int miOverlayScreenKeyIndex;
+static DevPrivateKey miOverlayScreenKey = &miOverlayScreenKeyIndex;
static void RebuildTree(WindowPtr);
static Bool HasUnderlayChildren(WindowPtr);
diff --git a/mi/mipointer.c b/mi/mipointer.c
index 809ce5e8b..8293e9b4f 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -41,13 +41,15 @@ in this Software without prior written authorization from The Open Group.
# include "dixstruct.h"
# include "inputstr.h"
-_X_EXPORT DevPrivateKey miPointerScreenKey = &miPointerScreenKey;
+static int miPointerScreenKeyIndex;
+_X_EXPORT DevPrivateKey miPointerScreenKey = &miPointerScreenKeyIndex;
#define GetScreenPrivate(s) ((miPointerScreenPtr) \
dixLookupPrivate(&(s)->devPrivates, miPointerScreenKey))
#define SetupScreen(s) miPointerScreenPtr pScreenPriv = GetScreenPrivate(s)
-static DevPrivateKey miPointerPrivKey = &miPointerPrivKey;
+static int miPointerPrivKeyIndex;
+static DevPrivateKey miPointerPrivKey = &miPointerPrivKeyIndex;
#define MIPOINTER(dev) \
((DevHasCursor((dev)) || (!dev->isMaster && !dev->u.master)) ? \
diff --git a/mi/miscrinit.c b/mi/miscrinit.c
index 6cd4df3a8..df969939e 100644
--- a/mi/miscrinit.c
+++ b/mi/miscrinit.c
@@ -280,7 +280,8 @@ miScreenInit(
return miScreenDevPrivateInit(pScreen, width, pbits);
}
-static DevPrivateKey privateKey = &privateKey;
+static int privateKeyIndex;
+static DevPrivateKey privateKey = &privateKeyIndex;
_X_EXPORT DevPrivateKey
miAllocateGCPrivateIndex()
@@ -288,7 +289,8 @@ miAllocateGCPrivateIndex()
return privateKey;
}
-_X_EXPORT DevPrivateKey miZeroLineScreenKey = &miZeroLineScreenKey;
+static int miZeroLineScreenKeyIndex;
+_X_EXPORT DevPrivateKey miZeroLineScreenKey = &miZeroLineScreenKeyIndex;
_X_EXPORT void
miSetZeroLineBias(ScreenPtr pScreen, unsigned int bias)
diff --git a/mi/misprite.c b/mi/misprite.c
index 85755b75a..692e6c97a 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -109,8 +109,10 @@ miSpriteIsDown(miCursorInfoPtr pDevCursor)
* screen wrappers
*/
-static DevPrivateKey miSpriteScreenKey = &miSpriteScreenKey;
-static DevPrivateKey miSpriteDevPrivatesKey = &miSpriteDevPrivatesKey;
+static int miSpriteScreenKeyIndex;
+static DevPrivateKey miSpriteScreenKey = &miSpriteScreenKeyIndex;
+static int mmiSpriteDevPrivatesKeyIndex;
+static DevPrivateKey miSpriteDevPrivatesKey = &mmiSpriteDevPrivatesKeyIndex;
static Bool miSpriteCloseScreen(int i, ScreenPtr pScreen);
static void miSpriteGetImage(DrawablePtr pDrawable, int sx, int sy,
diff --git a/miext/cw/cw.c b/miext/cw/cw.c
index efb046948..56066fe9c 100644
--- a/miext/cw/cw.c
+++ b/miext/cw/cw.c
@@ -43,11 +43,15 @@
#define CW_ASSERT(x) do {} while (0)
#endif
-DevPrivateKey cwGCKey = &cwGCKey;
-DevPrivateKey cwScreenKey = &cwScreenKey;
-DevPrivateKey cwWindowKey = &cwWindowKey;
+static int cwGCKeyIndex;
+DevPrivateKey cwGCKey = &cwGCKeyIndex;
+static int cwScreenKeyIndex;
+DevPrivateKey cwScreenKey = &cwScreenKeyIndex;
+static int cwWindowKeyIndex;
+DevPrivateKey cwWindowKey = &cwWindowKeyIndex;
#ifdef RENDER
-DevPrivateKey cwPictureKey = &cwPictureKey;
+static int cwPictureKeyIndex;
+DevPrivateKey cwPictureKey = &cwPictureKeyIndex;
#endif
extern GCOps cwGCOps;
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index 56864c56d..5000a824f 100755
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -70,10 +70,14 @@
#define pixmapDamage(pPixmap) damagePixPriv(pPixmap)
-static DevPrivateKey damageScrPrivateKey = &damageScrPrivateKey;
-static DevPrivateKey damagePixPrivateKey = &damagePixPrivateKey;
-static DevPrivateKey damageGCPrivateKey = &damageGCPrivateKey;
-static DevPrivateKey damageWinPrivateKey = &damageWinPrivateKey;
+static int damageScrPrivateKeyIndex;
+static DevPrivateKey damageScrPrivateKey = &damageScrPrivateKeyIndex;
+static int damagePixPrivateKeyIndex;
+static DevPrivateKey damagePixPrivateKey = &damagePixPrivateKeyIndex;
+static int damageGCPrivateKeyIndex;
+static DevPrivateKey damageGCPrivateKey = &damageGCPrivateKeyIndex;
+static int damageWinPrivateKeyIndex;
+static DevPrivateKey damageWinPrivateKey = &damageWinPrivateKeyIndex;
static DamagePtr *
getDrawableDamageRef (DrawablePtr pDrawable)
diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
index 8eaacca0b..421c03c00 100644
--- a/miext/rootless/rootlessScreen.c
+++ b/miext/rootless/rootlessScreen.c
@@ -62,10 +62,14 @@ extern int RootlessMiValidateTree(WindowPtr pRoot, WindowPtr pChild,
extern Bool RootlessCreateGC(GCPtr pGC);
// Initialize globals
-DevPrivateKey rootlessGCPrivateKey = &rootlessGCPrivateKey;
-DevPrivateKey rootlessScreenPrivateKey = &rootlessScreenPrivateKey;
-DevPrivateKey rootlessWindowPrivateKey = &rootlessWindowPrivateKey;
-DevPrivateKey rootlessWindowOldPixmapPrivateKey = &rootlessWindowOldPixmapPrivateKey;
+static int rootlessGCPrivateKeyIndex;
+DevPrivateKey rootlessGCPrivateKey = &rootlessGCPrivateKeyIndex;
+static int rootlessScreenPrivateKeyIndex;
+DevPrivateKey rootlessScreenPrivateKey = &rootlessScreenPrivateKeyIndex;
+static int rootlessWindowPrivateKeyIndex;
+DevPrivateKey rootlessWindowPrivateKey = &rootlessWindowPrivateKeyIndex;
+static int rootlessWindowOldPixmapPrivateKeyIndex;
+DevPrivateKey rootlessWindowOldPixmapPrivateKey = &rootlessWindowOldPixmapPrivateKeyIndex;
/*
diff --git a/miext/shadow/shadow.c b/miext/shadow/shadow.c
index ef0df4091..21f1de2d5 100644
--- a/miext/shadow/shadow.c
+++ b/miext/shadow/shadow.c
@@ -36,7 +36,8 @@
#include "gcstruct.h"
#include "shadow.h"
-DevPrivateKey shadowScrPrivateKey = &shadowScrPrivateKey;
+static int shadowScrPrivateKeyIndex;
+DevPrivateKey shadowScrPrivateKey = &shadowScrPrivateKeyIndex;
#define wrap(priv, real, mem) {\
priv->mem = real->mem; \
diff --git a/randr/randr.c b/randr/randr.c
index 9bfed0529..230d816a3 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -56,9 +56,11 @@ static int SProcRRDispatch (ClientPtr pClient);
int RREventBase;
int RRErrorBase;
RESTYPE RRClientType, RREventType; /* resource types for event masks */
-DevPrivateKey RRClientPrivateKey = &RRClientPrivateKey;
+static int RRClientPrivateKeyIndex;
+DevPrivateKey RRClientPrivateKey = &RRClientPrivateKeyIndex;
-DevPrivateKey rrPrivKey = &rrPrivKey;
+static int rrPrivKeyIndex;
+DevPrivateKey rrPrivKey = &rrPrivKeyIndex;
static void
RRClientCallback (CallbackListPtr *list,
diff --git a/record/record.c b/record/record.c
index d7314b1b1..d6a1c983b 100644
--- a/record/record.c
+++ b/record/record.c
@@ -165,7 +165,8 @@ typedef struct {
ProcFunctionPtr recordVector[256];
} RecordClientPrivateRec, *RecordClientPrivatePtr;
-static DevPrivateKey RecordClientPrivateKey = &RecordClientPrivateKey;
+static int RecordClientPrivateKeyIndex;
+static DevPrivateKey RecordClientPrivateKey = &RecordClientPrivateKeyIndex;
/* RecordClientPrivatePtr RecordClientPrivate(ClientPtr)
* gets the client private of the given client. Syntactic sugar.
diff --git a/render/animcur.c b/render/animcur.c
index 362607f7a..5723442fa 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -91,7 +91,9 @@ static CursorBits animCursorBits = {
};
static int AnimCurGeneration;
-static DevPrivateKey AnimCurScreenPrivateKey = &AnimCurScreenPrivateKey;
+
+static int AnimCurScreenPrivateKeyIndex;
+static DevPrivateKey AnimCurScreenPrivateKey = &AnimCurScreenPrivateKeyIndex;
#define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits))
#define GetAnimCur(c) ((AnimCurPtr) ((c) + 1))
diff --git a/render/picture.c b/render/picture.c
index b7874bb64..9def47b0f 100644
--- a/render/picture.c
+++ b/render/picture.c
@@ -43,8 +43,10 @@
#include "xace.h"
#include "registry.h"
-_X_EXPORT DevPrivateKey PictureScreenPrivateKey = &PictureScreenPrivateKey;
-DevPrivateKey PictureWindowPrivateKey = &PictureWindowPrivateKey;
+static int PictureScreenPrivateKeyIndex;
+_X_EXPORT DevPrivateKey PictureScreenPrivateKey = &PictureScreenPrivateKeyIndex;
+static int PictureWindowPrivateKeyIndex;
+DevPrivateKey PictureWindowPrivateKey = &PictureWindowPrivateKeyIndex;
static int PictureGeneration;
RESTYPE PictureType;
RESTYPE PictFormatType;
diff --git a/render/render.c b/render/render.c
index b1d6d5853..1b7d78b87 100644
--- a/render/render.c
+++ b/render/render.c
@@ -211,7 +211,8 @@ int (*SProcRenderVector[RenderNumberRequests])(ClientPtr) = {
};
int RenderErrBase;
-DevPrivateKey RenderClientPrivateKey;
+static int RenderClientPrivateKeyIndex;
+DevPrivateKey RenderClientPrivateKey = &RenderClientPrivateKeyIndex;
typedef struct _RenderClient {
int major_version;
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index ca1739797..c4069d9b6 100755
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -56,10 +56,12 @@
static RESTYPE CursorClientType;
static RESTYPE CursorHideCountType;
static RESTYPE CursorWindowType;
-static DevPrivateKey CursorScreenPrivateKey = &CursorScreenPrivateKey;
static CursorPtr CursorCurrent;
static CursorPtr pInvisibleCursor = NULL;
+static int CursorScreenPrivateKeyIndex;
+static DevPrivateKey CursorScreenPrivateKey = &CursorScreenPrivateKeyIndex;
+
static void deleteCursorHideCountsForScreen (ScreenPtr pScreen);
#define VERIFY_CURSOR(pCursor, cursor, client, access) { \
diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c
index 0db49895e..d1225c6f3 100755
--- a/xfixes/xfixes.c
+++ b/xfixes/xfixes.c
@@ -56,7 +56,9 @@
static unsigned char XFixesReqCode;
int XFixesEventBase;
int XFixesErrorBase;
-static DevPrivateKey XFixesClientPrivateKey = &XFixesClientPrivateKey;
+
+static int XFixesClientPrivateKeyIndex;
+static DevPrivateKey XFixesClientPrivateKey = &XFixesClientPrivateKeyIndex;
static int
ProcXFixesQueryVersion(ClientPtr client)
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 8a2682562..35938a960 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -42,7 +42,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <ctype.h>
#define EXTENSION_EVENT_BASE 64
-DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKey;
+static int xkbDevicePrivateKeyIndex;
+DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex;
void
xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc,