File xorg-server-xf4vnc-fix.diff of Package xorg-x11-server.import4680

Index: xorg-server-1.6.3.901/hw/vnc/cursor.c
================================================================================
--- xorg-server-1.7.99/configure.ac
+++ xorg-server-1.7.99/configure.ac
@@ -1504,7 +1504,7 @@
 	XVNC_CFLAGS="-DVNCSERVER -DHAVE_XVNC_CONFIG_H"
 	AC_SUBST([XVNC_CFLAGS])
 	VNC_INCLUDES="$XEXT_INC $RENDER_INC $XTRAP_INC $RECORD_INC"
-	XVNC_LIBS="$CONFIG_LIB $XSERVER_LIBS $FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $LIBS"
+	XVNC_LIBS="$XEXT_LIB $MAIN_LIB $CONFIG_LIB $XSERVER_LIBS $FB_LIB $MI_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $FIXES_LIB $LIBS"
 	AC_SUBST([XVNC_LIBS])
 
 	if test "x$GLX" = xyes; then
--- xorg-server-1.7.99/hw/vnc/cursor.c
+++ xorg-server-1.7.99/hw/vnc/cursor.c
@@ -33,6 +33,7 @@
 #include "sprite.h"
 #include "cursorstr.h"
 #include "servermd.h"
+#include "inputstr.h"
 
 
 /* Copied from Xvnc/lib/font/util/utilbitmap.c */
@@ -262,7 +263,7 @@
 
 #if XFREE86VNC
     if (pScreen == pCursorScreen) 
-        miPointerPosition(&x, &y);
+	miPointerGetPosition(inputInfo.pointer, &x, &y);
 #else
     rfbSpriteGetCursorPos(pScreen, &x, &y);
 #endif
--- xorg-server-1.7.99/hw/vnc/cutpaste.c
+++ xorg-server-1.7.99/hw/vnc/cutpaste.c
@@ -66,7 +66,7 @@
 	    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);
 	}
--- xorg-server-1.7.99/hw/vnc/dispcur.c
+++ xorg-server-1.7.99/hw/vnc/dispcur.c
@@ -74,7 +74,10 @@
 
 /* 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 @@
     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 @@
 	    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 @@
 	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 @@
     rfbDCCursorPtr   pPriv;
 
     pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates,
-					    pScreen);
+					     rfbScreenKey);
     if (pPriv && (pCursor->bits->refcnt <= 1))
     {
 	if (pPriv->sourceBits)
@@ -380,7 +383,7 @@
 	    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 @@
     WindowPtr	    pWin;
 
     pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates,
-					    pScreen);
+					     rfbScreenKey);
     if (!pPriv)
     {
 	pPriv = rfbDCRealize(pScreen, pCursor);
@@ -690,7 +693,7 @@
     PixmapPtr	    pTemp;
 
     pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates,
-					    pScreen);
+					     rfbScreenKey);
     if (!pPriv)
     {
 	pPriv = rfbDCRealize(pScreen, pCursor);
--- xorg-server-1.7.99/hw/vnc/init.c
+++ xorg-server-1.7.99/hw/vnc/init.c
@@ -90,6 +90,7 @@
 #include "dix.h"
 #include "micmap.h"
 #include "rfb.h"
+#include "xserver-properties.h"
 
 #ifdef CORBA
 #include <vncserverctrl.h>
@@ -138,7 +139,7 @@
 
 
 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 +776,8 @@
     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);
 
@@ -804,7 +805,7 @@
     case DEVICE_INIT: 
         vncSetKeyboardDevice(pDevice);
 	KbdDeviceInit(pDevice, &keySyms, modMap);
-	InitKeyboardDeviceStruct(pDev, &keySyms, modMap,
+	InitKeyboardDeviceStruct(pDevice, NULL,
 				 (BellProcPtr)rfbSendBell,
 				 (KbdCtrlProcPtr)NoopDDA);
         break;
@@ -831,6 +832,8 @@
     int onoff;
 {
     BYTE map[6];
+    Atom btn_labels[5] = {0};
+    Atom axes_labels[2] = {0};
     DevicePtr pDev = (DevicePtr)pDevice;
 
     switch (onoff)
@@ -842,10 +845,16 @@
 	map[3] = 3;
 	map[4] = 4;
 	map[5] = 5;
-	InitPointerDeviceStruct(pDev, map, 5,
-                                GetMotionHistory,
+	btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
+	btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
+	btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
+
+	axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
+	axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
+
+	InitPointerDeviceStruct(pDev, map, 5, btn_labels,
 				PtrDeviceControl,
-                                GetMaximumEventsNum(), 2 /* numAxes */);
+                                GetMaximumEventsNum(), 2 /* numAxes */, axes_labels);
         vncSetPointerDevice(pDevice);
 	break;
 
--- xorg-server-1.7.99/hw/vnc/kbdptr.c
+++ xorg-server-1.7.99/hw/vnc/kbdptr.c
@@ -39,6 +39,7 @@
 #include "mi.h"
 #include "mipointer.h"
 #include "keyboard.h"
+#include "xkbsrv.h"
 
 #ifdef DMXVNC
 #include "dmxinput.h"
@@ -69,15 +70,16 @@
    ptrDevice = ptr;
 }
 
-
 #ifndef DMXVNC
 static void
 EnqueueMotion(DeviceIntPtr ptrDev, int x, int y)
 {
-   xEvent *events = (xEvent*) calloc(sizeof(xEvent),  GetMaximumEventsNum());
    int detail = 0, valuators[2], nevents, i;
+   EventListPtr events;
    valuators[0] = x;
    valuators[1] = y;
+   GetEventList(&events);
+
    if (!ptrDev) {
       ErrorF("VNC: In EnqueueMotion() ptrDev=NULL\n");
       return;
@@ -85,8 +87,7 @@
    nevents = GetPointerEvents(events, ptrDev, MotionNotify, detail,
                               POINTER_ABSOLUTE, 0, 2, valuators);
    for (i = 0; i < nevents; i++)
-      mieqEnqueue(ptrDev, events + i);
-   free(events);
+      mieqEnqueue(ptrDev, (InternalEvent*)(events + i)->event);
 }
 #endif
 
@@ -94,8 +95,10 @@
 static void
 EnqueueButton(DeviceIntPtr ptrDev, int type, int detail)
 {
-   xEvent *events = (xEvent*) calloc(sizeof(xEvent),  GetMaximumEventsNum());
    int nevents, i;
+   EventListPtr events;
+   GetEventList(&events);
+
    if (!ptrDev) {
       ErrorF("VNC: In EnqueueButton() ptrDev=NULL\n");
       return;
@@ -103,27 +106,26 @@
    nevents = GetPointerEvents(events, ptrDev, type, detail,
                               POINTER_ABSOLUTE, 0, 0, NULL/*valuators*/);
    for (i = 0; i < nevents; i++)
-      mieqEnqueue(ptrDev, events + i);
-   free(events);
+      mieqEnqueue(ptrDev, (InternalEvent*)(events + i)->event);
 }
 
 
 static void
 EnqueueKey(DeviceIntPtr kbdDev, int type, int detail)
 {
-   xEvent *events = (xEvent*) calloc(sizeof(xEvent),  GetMaximumEventsNum());
    int nevents, i;
+   EventListPtr events;
+   GetEventList(&events);
+
    if (!kbdDev) {
       ErrorF("VNC: In EnqueueKey() kbdDev=NULL\n");
       return;
    }
    nevents = GetKeyboardEvents(events, kbdDev, type, detail);
    for (i = 0; i < nevents; i++)
-      mieqEnqueue(kbdDev, events + i);
-   free(events);
+      mieqEnqueue(kbdDev, (InternalEvent*)(events + i)->event);
 }
 
-
 /*
  * Called when the rfbserver receives a rfbKeyEvent event from a client.
  * Put an X keyboard event into the event queue.
@@ -133,6 +135,7 @@
 {
     const int type = down ? KeyPress : KeyRelease;
     KeySymsPtr keySyms;
+    XkbStateRec *xkb;
     int i;
     int keyCode = 0;
     int freeIndex = -1;
@@ -145,7 +148,7 @@
     if (!kbdDevice)
         return;
 
-    keySyms = &kbdDevice->key->curKeySyms;
+    keySyms = XkbGetCoreMap(kbdDevice);
 
 #ifdef CORBA
     if (cl) {
@@ -256,18 +259,19 @@
 		shiftMustBePressed = TRUE;
 	}
 
-	SendMappingNotify(MappingKeyboard, keyCode, 1, serverClient);
+	XkbApplyMappingChange(kbdDevice, keySyms, keyCode, 1, NULL, serverClient);
 
 	ErrorF("KbdAddEvent: unknown KeySym 0x%x - allocating KeyCode %d\n",
 	       (int)keySym, keyCode);
     }
 
+    xkb = &kbdDevice->key->xkbInfo->state;
     if (down) {
-	if (shiftMustBePressed && !(kbdDevice->key->state & ShiftMask)) {
+	if (shiftMustBePressed && !(XkbStateFieldFromRec(xkb) & ShiftMask)) {
 	    fakeShiftPress = TRUE;
             EnqueueKey(kbdDevice, KeyPress, SHIFT_L_KEY_CODE);
 	}
-	if (shiftMustBeReleased && (kbdDevice->key->state & ShiftMask)) {
+	if (shiftMustBeReleased && (XkbStateFieldFromRec(xkb) & ShiftMask)) {
 	    if (KEY_IS_PRESSED(SHIFT_L_KEY_CODE)) {
 		fakeShiftLRelease = TRUE;
                 EnqueueKey(kbdDevice, KeyRelease, SHIFT_L_KEY_CODE);
--- xorg-server-1.7.99/hw/vnc/rdp.c
+++ xorg-server-1.7.99/hw/vnc/rdp.c
@@ -27,6 +27,7 @@
 #include <errno.h>
 #include <netinet/in.h>
 #include <netinet/tcp.h>
+#include <arpa/inet.h>
 #include "rfb.h"
 
 typedef struct rdpClientRec {
--- xorg-server-1.7.99/hw/vnc/rfbkeyb.c
+++ xorg-server-1.7.99/hw/vnc/rfbkeyb.c
@@ -147,7 +147,7 @@
 #ifdef XKB
 	if (noXkbExtension) {
 #endif
-	    InitKeyboardDeviceStruct(pDev, &keySyms, modMap,
+	    InitKeyboardDeviceStruct(device, NULL,
 				 (BellProcPtr)rfbSendBell,
 				 (KbdCtrlProcPtr)NoopDDA);
 #ifdef XKB
@@ -388,7 +388,7 @@
     "xf4vnc Project, see http://xf4vnc.sf.net",
     MODINFOSTRING1,
     MODINFOSTRING2,
-    XF86_VERSION_CURRENT,
+    XORG_VERSION_CURRENT,
     1, 0, 0,
     ABI_CLASS_XINPUT,
     ABI_XINPUT_VERSION,
--- xorg-server-1.7.99/hw/vnc/rfbmouse.c
+++ xorg-server-1.7.99/hw/vnc/rfbmouse.c
@@ -51,7 +51,7 @@
 #include <mipointer.h>
 #endif
 #include "rfb.h"
-
+#include "xserver-properties.h"
 
 unsigned char ptrAcceleration = 50;
 
@@ -95,13 +95,18 @@
 {
     BYTE map[6];
     DevicePtr pDev = (DevicePtr)device;
+    Atom btn_labels[5] = {0};
+    Atom axes_labels[2] = {0};
+
     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");
@@ -119,10 +124,21 @@
 	map[3] = 3;
 	map[4] = 4;
 	map[5] = 5;
-	InitPointerDeviceStruct(pDev, map, 5, 
+	btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
+	btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
+	btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
+	btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP);
+	btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN);
+
+	axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
+	axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
+
+	InitPointerDeviceStruct(pDev, map, 5, btn_labels,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3
                                 func1,
+#endif
 				PtrDeviceControl,
-                                (*func2)(), 2);
+                                (*func2)(), 2, axes_labels);
 	break;
 
     case DEVICE_ON:
@@ -243,7 +259,7 @@
     "xf4vnc Project, see http://xf4vnc.sf.net",
     MODINFOSTRING1,
     MODINFOSTRING2,
-    XF86_VERSION_CURRENT,
+    XORG_VERSION_CURRENT,
     1, 0, 0,
     ABI_CLASS_XINPUT,
     ABI_XINPUT_VERSION,
--- xorg-server-1.7.99/hw/vnc/rfbserver.c
+++ xorg-server-1.7.99/hw/vnc/rfbserver.c
@@ -53,6 +53,7 @@
 #include "propertyst.h"
 #include <X11/Xatom.h>
 #include <mi.h>
+#include <inputstr.h>
 
 #ifdef CORBA
 #include <vncserverctrl.h>
@@ -1122,8 +1123,8 @@
 
 	{
 		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
 
--- xorg-server-1.7.99/hw/vnc/sprite.c
+++ xorg-server-1.7.99/hw/vnc/sprite.c
@@ -112,7 +112,8 @@
 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 @@
     rfbSpriteCopyClip,
 };
 
-static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKey;
+static int rfbSpriteGCKeyStore;
+static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKeyStore;
 
 #define GC_FUNC_PROLOGUE(pGC)					\
     rfbSpriteGCPtr   pGCPriv =					\
@@ -289,23 +291,27 @@
  * 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 @@
 #define SPRITE_PAD 8
 
 static Bool
-rfbSpriteRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor)
+rfbSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
 {
     rfbSpriteScreenPtr	pScreenPriv;
 
@@ -1975,7 +1981,7 @@
 }
 
 static Bool
-rfbSpriteUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor)
+rfbSpriteUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
 {
     rfbSpriteScreenPtr	pScreenPriv;
 
@@ -1985,7 +1991,7 @@
 }
 
 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 @@
 }
 
 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 @@
  */
 
 static Bool
-rfbDisplayCursor(pScreen, pCursor)
-    ScreenPtr pScreen;
-    CursorPtr pCursor;
+rfbDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
 {
     rfbClientPtr cl;
     rfbSpriteScreenPtr pPriv;
@@ -2230,7 +2245,7 @@
 
     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) {
--- xorg-server-1.7.99/hw/vnc/vncext.c
+++ xorg-server-1.7.99/hw/vnc/vncext.c
@@ -36,8 +36,9 @@
 #include <arpa/inet.h>
 #include <netdb.h>
 
-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 @@
    	  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 @@
    	  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 @@
     	  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;
--- xorg-server-1.7.99/hw/xfree86/vnc/vncInit.c
+++ xorg-server-1.7.99/hw/xfree86/vnc/vncInit.c
@@ -34,8 +34,7 @@
 
 #include "xf86.h"
 #include "xf86_OSproc.h"
-#include "xf86Resources.h"
-#include "xf86Version.h"
+#include "xorgVersion.h"
 
 int vncScreenPrivateIndex = -1;
 int inetdSock = -1;
@@ -48,6 +47,8 @@
 
 extern void VncExtensionInit(void);
 
+extern void vncInitMouse(void);
+extern void vncInitKeyb(void);
 Bool VNCInit(ScreenPtr pScreen, unsigned char *FBStart);
 
 #ifndef XFree86LOADER
@@ -56,11 +57,11 @@
 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 +390,23 @@
 /****** 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 +427,11 @@
     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 +441,7 @@
 	    cl->cursorWasMoved = TRUE;
     }
 
-    (*pScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
+    (*pScreenPriv->spriteFuncs->MoveCursor)(pDev, pScreen, x, y);
 }
 
 Bool
@@ -505,9 +506,7 @@
 #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 +519,7 @@
 	    cl->cursorWasChanged = TRUE;
     }
 
-    ret = (*pScreen->DisplayCursor)(pScreen, pCursor);
+    ret = (*pScreen->DisplayCursor)(pDev, pScreen, pCursor);
 
     pScreen->DisplayCursor = vncDisplayCursor;
 
@@ -586,6 +585,7 @@
     NULL                   /* ModuleTearDownProc */
 };
 
+#if 0
 ModuleInfoRec VNC = {
     1,                     /* moduleVersion */
     "VNC",                 /* moduleName */
@@ -593,6 +593,7 @@
     0,                     /* refCount */
     VNCAvailableOptions,   /* function returning array of OptionsInfoRec */
 };
+#endif
 
 ExtensionModule vncExtensionModule = {
         VncExtensionInit,  /* initFunc */
openSUSE Build Service is sponsored by