Stefan Dirsch
7e6a980b1f
Copy from home:oertel:branches:openSUSE:Factory/xorg-x11-server via accept of submit request 35298 revision 8. Request was accepted with message: reviewed ok. OBS-URL: https://build.opensuse.org/request/show/35298 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=229
723 lines
22 KiB
Diff
723 lines
22 KiB
Diff
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 */
|