diff --git a/src/sun_mouse.c b/src/sun_mouse.c index f6e8dbb..80e1111 100644 --- a/src/sun_mouse.c +++ b/src/sun_mouse.c @@ -116,13 +116,21 @@ static void vuidMouseSendScreenSize(ScreenPtr pScreen, VuidMsePtr pVuidMse); static void vuidMouseAdjustFrame(int index, int x, int y, int flags); static int vuidMouseGeneration = 0; -static int vuidMouseScreenIndex; +DevPrivateKeyRec vuidDevicePrivateKeyRec; +#define vuidDevicePrivateKey (&vuidDevicePrivateKeyRec) + #define vuidMouseGetScreenPrivate(s) ( \ - dixLookupPrivate(&(s)->devPrivates, &vuidMouseScreenIndex)) + dixLookupPrivate(&(s)->devPrivates, vuidDevicePrivateKey)) #define vuidMouseSetScreenPrivate(s,p) \ - dixSetPrivate(&(s)->devPrivates, &vuidMouseScreenIndex, (void *) p) + dixSetPrivate(&(s)->devPrivates, vuidDevicePrivateKey, (void *) p) #endif /* HAVE_ABSOLUTE_MOUSE_SCALING */ +static Bool +VuidInitPrivates(void) +{ + return dixRegisterPrivateKey(vuidDevicePrivateKey, PRIVATE_SCREEN, 0); +} + static inline VuidMsePtr getVuidMsePriv(InputInfoPtr pInfo) { @@ -542,6 +550,7 @@ vuidMouseProc(DeviceIntPtr pPointer, int what) case DEVICE_INIT: #ifdef HAVE_ABSOLUTE_MOUSE_SCALING + VuidInitPrivates(); if (vuidMouseGeneration != serverGeneration) { for (i = 0; i < screenInfo.numScreens; i++) { ScreenPtr pScreen = screenInfo.screens[i];