Index: xorg-server-1.6.1/hw/vnc/cutpaste.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/cutpaste.c +++ xorg-server-1.6.1/hw/vnc/cutpaste.c @@ -66,7 +66,7 @@ rfbSetXCutText(char *str, int len) event.u.selectionClear.time = GetTimeInMillis(); event.u.selectionClear.window = pSel->window; event.u.selectionClear.atom = pSel->selection; - (void) TryClientEvents (pSel->client, &event, 1, + (void) TryClientEvents (pSel->client, NULL, &event, 1, NoEventMask, NoEventMask /* CantBeFiltered */, NullGrab); } Index: xorg-server-1.6.1/hw/vnc/kbdptr.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/kbdptr.c +++ xorg-server-1.6.1/hw/vnc/kbdptr.c @@ -74,19 +74,26 @@ vncSetPointerDevice(DeviceIntPtr ptr) static void EnqueueMotion(DeviceIntPtr ptrDev, int x, int y) { - xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); + int maxEventsNum = GetMaximumEventsNum(); + xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); + EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); int detail = 0, valuators[2], nevents, i; valuators[0] = x; valuators[1] = y; + for (i = 0; i < maxEventsNum; i++) { + evls[i].event = &events[i]; + evls[i].evlen = sizeof(xEvent); + } if (!ptrDev) { ErrorF("VNC: In EnqueueMotion() ptrDev=NULL\n"); return; } - nevents = GetPointerEvents(events, ptrDev, MotionNotify, detail, + nevents = GetPointerEvents(evls, ptrDev, MotionNotify, detail, POINTER_ABSOLUTE, 0, 2, valuators); for (i = 0; i < nevents; i++) mieqEnqueue(ptrDev, events + i); free(events); + free(evls); } #endif @@ -94,33 +101,47 @@ EnqueueMotion(DeviceIntPtr ptrDev, int x static void EnqueueButton(DeviceIntPtr ptrDev, int type, int detail) { - xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); + int maxEventsNum = GetMaximumEventsNum(); + xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); + EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); int nevents, i; + for (i = 0; i < maxEventsNum; i++) { + evls[i].event = &events[i]; + evls[i].evlen = sizeof(xEvent); + } if (!ptrDev) { ErrorF("VNC: In EnqueueButton() ptrDev=NULL\n"); return; } - nevents = GetPointerEvents(events, ptrDev, type, detail, + nevents = GetPointerEvents(evls, ptrDev, type, detail, POINTER_ABSOLUTE, 0, 0, NULL/*valuators*/); for (i = 0; i < nevents; i++) mieqEnqueue(ptrDev, events + i); free(events); + free(evls); } static void EnqueueKey(DeviceIntPtr kbdDev, int type, int detail) { - xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); + int maxEventsNum = GetMaximumEventsNum(); + xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); + EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); int nevents, i; + for (i = 0; i < maxEventsNum; i++) { + evls[i].event = &events[i]; + evls[i].evlen = sizeof(xEvent); + } if (!kbdDev) { ErrorF("VNC: In EnqueueKey() kbdDev=NULL\n"); return; } - nevents = GetKeyboardEvents(events, kbdDev, type, detail); + nevents = GetKeyboardEvents(evls, kbdDev, type, detail); for (i = 0; i < nevents; i++) mieqEnqueue(kbdDev, events + i); free(events); + free(evls); } @@ -256,7 +277,7 @@ KbdAddEvent(Bool down, KeySym keySym, rf shiftMustBePressed = TRUE; } - SendMappingNotify(MappingKeyboard, keyCode, 1, serverClient); + SendMappingNotify(kbdDevice, MappingKeyboard, keyCode, 1, serverClient); ErrorF("KbdAddEvent: unknown KeySym 0x%x - allocating KeyCode %d\n", (int)keySym, keyCode); Index: xorg-server-1.6.1/hw/vnc/rfbkeyb.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/rfbkeyb.c +++ xorg-server-1.6.1/hw/vnc/rfbkeyb.c @@ -388,7 +388,7 @@ static XF86ModuleVersionInfo xf86rfbKeyb "xf4vnc Project, see http://xf4vnc.sf.net", MODINFOSTRING1, MODINFOSTRING2, - XF86_VERSION_CURRENT, + XORG_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_XINPUT, ABI_XINPUT_VERSION, Index: xorg-server-1.6.1/hw/vnc/rfbmouse.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/rfbmouse.c +++ xorg-server-1.6.1/hw/vnc/rfbmouse.c @@ -98,10 +98,12 @@ xf86rfbMouseControlProc(DeviceIntPtr dev void *func1; int (*func2)(void); +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 if (LoaderSymbol("GetMotionHistory")) func1 = LoaderSymbol("GetMotionHistory"); else func1 = LoaderSymbol("miPointerGetMotionEvents"); +#endif if (LoaderSymbol("GetMotionHistorySize")) func2 = LoaderSymbol("GetMotionHistorySize"); @@ -120,7 +122,9 @@ xf86rfbMouseControlProc(DeviceIntPtr dev map[4] = 4; map[5] = 5; InitPointerDeviceStruct(pDev, map, 5, +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 func1, +#endif PtrDeviceControl, (*func2)(), 2); break; @@ -243,7 +247,7 @@ static XF86ModuleVersionInfo xf86rfbMous "xf4vnc Project, see http://xf4vnc.sf.net", MODINFOSTRING1, MODINFOSTRING2, - XF86_VERSION_CURRENT, + XORG_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_XINPUT, ABI_XINPUT_VERSION, Index: xorg-server-1.6.1/hw/vnc/rfbserver.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/rfbserver.c +++ xorg-server-1.6.1/hw/vnc/rfbserver.c @@ -1122,8 +1122,8 @@ rfbProcessClientNormalMessage(cl) { int x, y; - miPointerPosition(&x, &y); /*XXX deprecated*/ - (*pVNC->spriteFuncs->SetCursor)(cl->pScreen, pVNC->pCurs, x, y); + miPointerGetPosition(inputInfo.pointer, &x, &y); + (*pVNC->spriteFuncs->SetCursor)(inputInfo.pointer, cl->pScreen, pVNC->pCurs, x, y); } #endif Index: xorg-server-1.6.1/hw/vnc/sprite.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/sprite.c +++ xorg-server-1.6.1/hw/vnc/sprite.c @@ -112,7 +112,8 @@ static void rfbSpriteSaveDoomedAreas static RegionPtr rfbSpriteRestoreAreas(WindowPtr pWin, RegionPtr pRgnExposed); static void rfbSpriteComputeSaved(ScreenPtr pScreen); -static DevPrivateKey rfbSpriteScreenKey = &rfbSpriteScreenKey; +static int rfbSpriteScreenKeyStore; +static DevPrivateKey rfbSpriteScreenKey = &rfbSpriteScreenKeyStore; #define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = \ ((rfbSpriteScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \ @@ -144,7 +145,8 @@ static GCFuncs rfbSpriteGCFuncs = { rfbSpriteCopyClip, }; -static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKey; +static int rfbSpriteGCKeyStore; +static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKeyStore; #define GC_FUNC_PROLOGUE(pGC) \ rfbSpriteGCPtr pGCPriv = \ @@ -289,23 +291,27 @@ static GCOps rfbSpriteGCOps = { * pointer-sprite method table */ -static Bool rfbSpriteRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor); -static Bool rfbSpriteUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor); -static void rfbSpriteSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y); -static void rfbSpriteMoveCursor (ScreenPtr pScreen, int x, int y); +static Bool rfbSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); +static Bool rfbSpriteUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); +static void rfbSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y); +static void rfbSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y); +static Bool rfbSpriteInitializeCursor (DeviceIntPtr pDev, ScreenPtr pScreen); +static void rfbSpriteCleanupCursor (DeviceIntPtr pDev, ScreenPtr pScreen); miPointerSpriteFuncRec rfbSpritePointerFuncs = { rfbSpriteRealizeCursor, rfbSpriteUnrealizeCursor, rfbSpriteSetCursor, rfbSpriteMoveCursor, + rfbSpriteInitializeCursor, + rfbSpriteCleanupCursor, }; /* * other misc functions */ -static Bool rfbDisplayCursor (ScreenPtr pScreen, CursorPtr pCursor); +static Bool rfbDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); /* @@ -1963,7 +1969,7 @@ rfbSpriteLineHelper() #define SPRITE_PAD 8 static Bool -rfbSpriteRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) +rfbSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) { rfbSpriteScreenPtr pScreenPriv; @@ -1975,7 +1981,7 @@ rfbSpriteRealizeCursor (ScreenPtr pScree } static Bool -rfbSpriteUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) +rfbSpriteUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) { rfbSpriteScreenPtr pScreenPriv; @@ -1985,7 +1991,7 @@ rfbSpriteUnrealizeCursor (ScreenPtr pScr } static void -rfbSpriteSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y) +rfbSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y) { rfbSpriteScreenPtr pScreenPriv; rfbClientPtr cl, nextCl; @@ -2101,13 +2107,24 @@ rfbSpriteSetCursor (ScreenPtr pScreen, C } static void -rfbSpriteMoveCursor (ScreenPtr pScreen, int x, int y) +rfbSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) { rfbSpriteScreenPtr pScreenPriv; pScreenPriv = (rfbSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates, rfbSpriteScreenKey); - rfbSpriteSetCursor (pScreen, pScreenPriv->pCursor, x, y); + rfbSpriteSetCursor (pDev, pScreen, pScreenPriv->pCursor, x, y); +} + +static Bool +rfbSpriteInitializeCursor (DeviceIntPtr pDev, ScreenPtr pScreen) +{ + return TRUE; +} + +static void +rfbSpriteCleanupCursor (DeviceIntPtr pDev, ScreenPtr pScreen) +{ } /* @@ -2215,9 +2232,7 @@ rfbSpriteComputeSaved (pScreen) */ static Bool -rfbDisplayCursor(pScreen, pCursor) - ScreenPtr pScreen; - CursorPtr pCursor; +rfbDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) { rfbClientPtr cl; rfbSpriteScreenPtr pPriv; @@ -2230,7 +2245,7 @@ rfbDisplayCursor(pScreen, pCursor) pPriv = (rfbSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates, rfbSpriteScreenKey); - status = (*pPriv->DisplayCursor)(pScreen, pCursor); + status = (*pPriv->DisplayCursor)(pDev, pScreen, pCursor); /* send new cursor shape to interested viewers */ for (cl = rfbClientHead; cl ; cl = cl->next) { Index: xorg-server-1.6.1/hw/xfree86/vnc/vncInit.c =================================================================== --- xorg-server-1.6.1.orig/hw/xfree86/vnc/vncInit.c +++ xorg-server-1.6.1/hw/xfree86/vnc/vncInit.c @@ -35,7 +35,7 @@ #include "xf86.h" #include "xf86_OSproc.h" #include "xf86Resources.h" -#include "xf86Version.h" +#include "xorgVersion.h" int vncScreenPrivateIndex = -1; int inetdSock = -1; @@ -56,11 +56,11 @@ static unsigned long VNCGeneration = 0; static const OptionInfoRec *VNCAvailableOptions(void *unused); static void rfbWakeupHandler (int i, pointer blockData, unsigned long err, pointer pReadmask); -static Bool vncCursorRealizeCursor(ScreenPtr, CursorPtr); -static Bool vncCursorUnrealizeCursor(ScreenPtr, CursorPtr); -static void vncCursorSetCursor(ScreenPtr, CursorPtr, int, int); -static void vncCursorMoveCursor(ScreenPtr, int, int); -static Bool vncDisplayCursor(ScreenPtr, CursorPtr); +static Bool vncCursorRealizeCursor(DeviceIntPtr, ScreenPtr, CursorPtr); +static Bool vncCursorUnrealizeCursor(DeviceIntPtr, ScreenPtr, CursorPtr); +static void vncCursorSetCursor(DeviceIntPtr, ScreenPtr, CursorPtr, int, int); +static void vncCursorMoveCursor(DeviceIntPtr, ScreenPtr, int, int); +static Bool vncDisplayCursor(DeviceIntPtr, ScreenPtr, CursorPtr); static miPointerSpriteFuncRec vncCursorSpriteFuncs = { vncCursorRealizeCursor, @@ -389,23 +389,23 @@ VNCInit(ScreenPtr pScreen, unsigned char /****** miPointerSpriteFunctions *******/ static Bool -vncCursorRealizeCursor(ScreenPtr pScreen, CursorPtr pCurs) +vncCursorRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs) { vncScreenPtr pScreenPriv = VNCPTR(pScreen); - return (*pScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCurs); + return (*pScreenPriv->spriteFuncs->RealizeCursor)(pDev, pScreen, pCurs); } static Bool -vncCursorUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCurs) +vncCursorUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs) { vncScreenPtr pScreenPriv = VNCPTR(pScreen); - return (*pScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCurs); + return (*pScreenPriv->spriteFuncs->UnrealizeCursor)(pDev, pScreen, pCurs); } static void -vncCursorSetCursor(ScreenPtr pScreen, CursorPtr pCurs, int x, int y) +vncCursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs, int x, int y) { vncScreenPtr pScreenPriv = VNCPTR(pScreen); @@ -426,11 +426,11 @@ vncCursorSetCursor(ScreenPtr pScreen, Cu pScreenPriv->cursorIsDrawn = TRUE; #endif - (*pScreenPriv->spriteFuncs->SetCursor)(pScreen, pCurs, x, y); + (*pScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, pCurs, x, y); } static void -vncCursorMoveCursor(ScreenPtr pScreen, int x, int y) +vncCursorMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) { vncScreenPtr pScreenPriv = VNCPTR(pScreen); rfbClientPtr cl; @@ -440,7 +440,7 @@ vncCursorMoveCursor(ScreenPtr pScreen, i cl->cursorWasMoved = TRUE; } - (*pScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y); + (*pScreenPriv->spriteFuncs->MoveCursor)(pDev, pScreen, x, y); } Bool @@ -505,9 +505,7 @@ vncUseHWCursorARGB(pScreen, pCursor) #endif static Bool -vncDisplayCursor(pScreen, pCursor) - ScreenPtr pScreen; - CursorPtr pCursor; +vncDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) { vncScreenPtr pScreenPriv = VNCPTR(pScreen); rfbClientPtr cl; @@ -520,7 +518,7 @@ vncDisplayCursor(pScreen, pCursor) cl->cursorWasChanged = TRUE; } - ret = (*pScreen->DisplayCursor)(pScreen, pCursor); + ret = (*pScreen->DisplayCursor)(pDev, pScreen, pCursor); pScreen->DisplayCursor = vncDisplayCursor; Index: xorg-server-1.6.1/hw/vnc/vncext.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/vncext.c +++ xorg-server-1.6.1/hw/vnc/vncext.c @@ -36,8 +36,9 @@ #include #include -DevPrivateKey vncCreateScreenResourcesKey = &vncCreateScreenResourcesKey; -DevPrivateKey rfbGCKey = &rfbGCKey; +static int vncCreateScreenResourcesKeyStore, rfbGCKeyStore; +DevPrivateKey vncCreateScreenResourcesKey = &vncCreateScreenResourcesKeyStore; +DevPrivateKey rfbGCKey = &rfbGCKeyStore; int VncSelectNotify(ClientPtr client, BOOL onoff); void VncExtensionInit(void); @@ -514,7 +515,7 @@ GenerateVncConnectedEvent(int sock) else conn.ipaddress = (CARD32)peer.sin_addr.s_addr; - (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, + (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, NoEventMask, NullGrab); } pn = pn->next; @@ -557,7 +558,7 @@ GenerateVncChromiumConnectedEvent(int so else conn.ipaddress = (CARD32)peer.sin_addr.s_addr; - (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, + (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, NoEventMask, NullGrab); } pn = pn->next; @@ -586,7 +587,7 @@ GenerateVncDisconnectedEvent(int sock) conn.type = VncEventBase + XVncDisconnected; conn.sequenceNumber = pn->client->sequence; conn.connected = sock; - (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, + (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, NoEventMask, NullGrab); } pn = pn->next; Index: xorg-server-1.6.1/hw/vnc/cursor.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/cursor.c +++ xorg-server-1.6.1/hw/vnc/cursor.c @@ -262,7 +262,7 @@ rfbSendCursorPos(cl, pScreen) #if XFREE86VNC if (pScreen == pCursorScreen) - miPointerPosition(&x, &y); + miPointerGetPosition(inputInfo.pointer, &x, &y); #else rfbSpriteGetCursorPos(pScreen, &x, &y); #endif Index: xorg-server-1.6.1/hw/vnc/init.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/init.c +++ xorg-server-1.6.1/hw/vnc/init.c @@ -138,7 +138,7 @@ static void rfbCrossScreen(ScreenPtr pSc static void -PointerWarpCursor(ScreenPtr pScreen, int x, int y) +PointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) { #if 0 DeviceIntPtr pDev = NULL; @@ -775,8 +775,8 @@ InitInput(argc, argv) char *argv[]; { DeviceIntPtr p, k; - k = AddInputDevice(rfbKeybdProc, TRUE); - p = AddInputDevice(rfbMouseProc, TRUE); + k = AddInputDevice(serverClient, rfbKeybdProc, TRUE); + p = AddInputDevice(serverClient, rfbMouseProc, TRUE); RegisterKeyboardDevice(k); RegisterPointerDevice(p); @@ -843,7 +843,6 @@ rfbMouseProc(pDevice, onoff) map[4] = 4; map[5] = 5; InitPointerDeviceStruct(pDev, map, 5, - GetMotionHistory, PtrDeviceControl, GetMaximumEventsNum(), 2 /* numAxes */); vncSetPointerDevice(pDevice); Index: xorg-server-1.6.1/hw/vnc/dispcur.c =================================================================== --- xorg-server-1.6.1.orig/hw/vnc/dispcur.c +++ xorg-server-1.6.1/hw/vnc/dispcur.c @@ -74,7 +74,10 @@ in this Software without prior written a /* per-screen private data */ -static DevPrivateKey rfbDCScreenKey = &rfbDCScreenKey; +static int rfbDCScreenKeyStore; +static DevPrivateKey rfbDCScreenKey = &rfbDCScreenKeyStore; +static int rfbScreenKeyStore; +static DevPrivateKey rfbScreenKey = &rfbScreenKeyStore; static Bool rfbDCCloseScreen(int index, ScreenPtr pScreen); @@ -205,7 +208,7 @@ rfbDCRealizeCursor (pScreen, pCursor) CursorPtr pCursor; { if (pCursor->bits->refcnt <= 1) - dixSetPrivate(&pCursor->bits->devPrivates, pScreen, NULL); + dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, NULL); return TRUE; } @@ -303,7 +306,7 @@ rfbDCRealize (ScreenPtr pScreen, CursorP xfree ((pointer) pPriv); return (rfbDCCursorPtr)NULL; } - dixSetPrivate(&pCursor->bits->devPrivates, pScreen, pPriv); + dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, pPriv); return pPriv; } pPriv->pPicture = 0; @@ -321,7 +324,7 @@ rfbDCRealize (ScreenPtr pScreen, CursorP xfree ((pointer) pPriv); return (rfbDCCursorPtr)NULL; } - dixSetPrivate(&pCursor->bits->devPrivates, pScreen, pPriv); + dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, pPriv); /* create the two sets of bits, clipping as appropriate */ @@ -368,7 +371,7 @@ rfbDCUnrealizeCursor (pScreen, pCursor) rfbDCCursorPtr pPriv; pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, - pScreen); + rfbScreenKey); if (pPriv && (pCursor->bits->refcnt <= 1)) { if (pPriv->sourceBits) @@ -380,7 +383,7 @@ rfbDCUnrealizeCursor (pScreen, pCursor) FreePicture (pPriv->pPicture, 0); #endif xfree ((pointer) pPriv); - dixSetPrivate(&pCursor->bits->devPrivates, pScreen, NULL); + dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, NULL); } return TRUE; } @@ -439,7 +442,7 @@ rfbDCPutUpCursor (pScreen, pCursor, x, y WindowPtr pWin; pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, - pScreen); + rfbScreenKey); if (!pPriv) { pPriv = rfbDCRealize(pScreen, pCursor); @@ -690,7 +693,7 @@ rfbDCMoveCursor (pScreen, pCursor, x, y, PixmapPtr pTemp; pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, - pScreen); + rfbScreenKey); if (!pPriv) { pPriv = rfbDCRealize(pScreen, pCursor);