This commit is contained in:
Tim Waugh 2015-02-13 10:32:29 +00:00
parent bbcb717d22
commit 3994e4cda7
13 changed files with 68 additions and 1214 deletions

View File

@ -1,29 +0,0 @@
diff -up tigervnc-1.3.0/unix/xserver/configure.ac.jx tigervnc-1.3.0/unix/xserver/configure.ac
--- tigervnc-1.3.0/unix/xserver/configure.ac.jx 2013-11-07 11:39:49.000000000 -0500
+++ tigervnc-1.3.0/unix/xserver/configure.ac 2013-11-07 11:40:17.215043570 -0500
@@ -1597,7 +1596,7 @@ fi
dnl Xvnc DDX
AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
-AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
+AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
dnl Xnest DDX
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/xorg-version.h.jx tigervnc-1.3.0/unix/xserver/hw/vnc/xorg-version.h
--- tigervnc-1.3.0/unix/xserver/hw/vnc/xorg-version.h.jx 2013-07-01 08:41:24.000000000 -0400
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/xorg-version.h 2013-11-07 11:39:49.749992669 -0500
@@ -44,8 +44,12 @@
#define XORG 113
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (14 * 100000) + (99 * 1000))
#define XORG 114
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (15 * 100000) + (99 * 1000))
+#define XORG 115
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (16 * 100000) + (99 * 1000))
+#define XORG 116
#else
-#error "X.Org newer than 1.14 is not supported"
+#error "X.Org newer than 1.16 is not supported"
#endif
#endif

View File

@ -1,268 +0,0 @@
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc.116 2013-05-30 16:53:40.000000000 +0200
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc 2014-04-28 16:55:02.591440218 +0200
@@ -262,7 +262,7 @@ static int pointerProc(DeviceIntPtr pDev
return Success;
}
-static void keyboardBell(int percent, DeviceIntPtr device, pointer ctrl,
+static void keyboardBell(int percent, DeviceIntPtr device, void * ctrl,
int class_)
{
if (percent > 0)
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc.116 2014-04-28 16:55:02.530441812 +0200
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc 2014-04-28 16:55:02.592440192 +0200
@@ -48,7 +48,7 @@ extern "C" {
#define public c_public
#define class c_class
-extern char *display;
+extern const char *display;
#include "colormapst.h"
#ifdef RANDR
@@ -174,7 +174,7 @@ void XserverDesktop::serverReset(ScreenP
{
pScreen = pScreen_;
int i;
- pointer retval;
+ void * retval;
#if XORG >= 17
#define dixLookupResource dixLookupResourceByType
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc.116 2014-04-28 16:55:02.524441969 +0200
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc 2014-04-28 16:55:02.592440192 +0200
@@ -65,18 +65,18 @@ extern "C" {
extern void vncExtensionInit();
static void vncResetProc(ExtensionEntry* extEntry);
- static void vncBlockHandler(pointer data, OSTimePtr t, pointer readmask);
- static void vncWakeupHandler(pointer data, int nfds, pointer readmask);
+ static void vncBlockHandler(void * data, OSTimePtr t, void * readmask);
+ static void vncWakeupHandler(void * data, int nfds, void * readmask);
void vncWriteBlockHandler(fd_set *fds);
void vncWriteWakeupHandler(int nfds, fd_set *fds);
- static void vncClientStateChange(CallbackListPtr*, pointer, pointer);
+ static void vncClientStateChange(CallbackListPtr*, void *, void *);
static void SendSelectionChangeEvent(Atom selection);
static int ProcVncExtDispatch(ClientPtr client);
static int SProcVncExtDispatch(ClientPtr client);
- static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data,
- pointer args);
+ static void vncSelectionCallback(CallbackListPtr *callbacks, void * data,
+ void * args);
- extern char *display;
+ extern const char *display;
extern char *listenaddr;
}
@@ -284,7 +284,7 @@ static void vncResetProc(ExtensionEntry*
{
}
-static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args)
+static void vncSelectionCallback(CallbackListPtr *callbacks, void * data, void * args)
{
SelectionInfoRec *info = (SelectionInfoRec *) args;
Selection *selection = info->selection;
@@ -301,7 +301,7 @@ static void vncWriteWakeupHandlerFallbac
// selections have changed, and if so, notify any interested X clients.
//
-static void vncBlockHandler(pointer data, OSTimePtr timeout, pointer readmask)
+static void vncBlockHandler(void * data, OSTimePtr timeout, void * readmask)
{
fd_set* fds = (fd_set*)readmask;
@@ -312,7 +312,7 @@ static void vncBlockHandler(pointer data
desktop[scr]->blockHandler(fds, timeout);
}
-static void vncWakeupHandler(pointer data, int nfds, pointer readmask)
+static void vncWakeupHandler(void * data, int nfds, void * readmask)
{
fd_set* fds = (fd_set*)readmask;
@@ -402,7 +402,7 @@ static void vncWriteWakeupHandlerFallbac
vncWriteWakeupHandler(ret, &fallbackFds);
}
-static void vncClientStateChange(CallbackListPtr*, pointer, pointer p)
+static void vncClientStateChange(CallbackListPtr*, void *, void * p)
{
ClientPtr client = ((NewClientInfoRec*)p)->client;
if (client->clientState == ClientStateGone) {
@@ -468,7 +468,7 @@ void vncClientCutText(const char* str, i
static CARD32 queryConnectTimerCallback(OsTimerPtr timer,
- CARD32 now, pointer arg)
+ CARD32 now, void * arg)
{
if (queryConnectTimeout)
queryConnectDesktop->approveConnection(queryConnectId, false, "The attempt to prompt the user to accept the connection failed");
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc.116 2013-05-22 14:57:16.000000000 +0200
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc 2014-04-28 16:55:02.593440166 +0200
@@ -91,8 +91,8 @@ typedef struct {
} vncHooksScreenRec, *vncHooksScreenPtr;
typedef struct {
- GCFuncs *wrappedFuncs;
- GCOps *wrappedOps;
+ const GCFuncs *wrappedFuncs;
+ const GCOps *wrappedOps;
} vncHooksGCRec, *vncHooksGCPtr;
#if XORG == 15
@@ -141,11 +141,11 @@ static Bool vncHooksDisplayCursor(
#endif
ScreenPtr pScreen, CursorPtr cursor);
#if XORG < 112
-static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
- pointer pReadmask);
+static void vncHooksBlockHandler(int i, void * blockData, void * pTimeout,
+ void * pReadmask);
#else
-static void vncHooksBlockHandler(ScreenPtr pScreen, pointer pTimeout,
- pointer pReadmask);
+static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout,
+ void * pReadmask);
#endif
#ifdef RENDER
static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
@@ -174,7 +174,7 @@ static void vncHooksValidateGC(GCPtr pGC
static void vncHooksChangeGC(GCPtr pGC, unsigned long mask);
static void vncHooksCopyGC(GCPtr src, unsigned long mask, GCPtr dst);
static void vncHooksDestroyGC(GCPtr pGC);
-static void vncHooksChangeClip(GCPtr pGC, int type, pointer pValue,int nrects);
+static void vncHooksChangeClip(GCPtr pGC, int type, void * pValue,int nrects);
static void vncHooksDestroyClip(GCPtr pGC);
static void vncHooksCopyClip(GCPtr dst, GCPtr src);
@@ -226,10 +226,10 @@ static void vncHooksImageText16(Drawable
int count, unsigned short *chars);
static void vncHooksImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x,
int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase);
+ CharInfoPtr *ppci, void * pglyphBase);
static void vncHooksPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x,
int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase);
+ CharInfoPtr *ppci, void * pglyphBase);
static void vncHooksPushPixels(GCPtr pGC, PixmapPtr pBitMap,
DrawablePtr pDrawable, int w, int h, int x,
int y);
@@ -575,11 +575,11 @@ static Bool vncHooksDisplayCursor(
// these are just drawing the cursor.
#if XORG < 112
-static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
- pointer pReadmask)
+static void vncHooksBlockHandler(int i, void * blockData, void * pTimeout,
+ void * pReadmask)
#else
-static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout,
- pointer pReadmask)
+static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout,
+ void * pReadmask)
#endif
{
#if XORG < 112
@@ -914,7 +914,7 @@ static void vncHooksDestroyGC(GCPtr pGC)
GCFuncUnwrapper u(pGC);
(*pGC->funcs->DestroyGC) (pGC);
}
-static void vncHooksChangeClip(GCPtr pGC, int type, pointer pValue, int nrects)
+static void vncHooksChangeClip(GCPtr pGC, int type, void * pValue, int nrects)
{
GCFuncUnwrapper u(pGC);
(*pGC->funcs->ChangeClip) (pGC, type, pValue, nrects);
@@ -954,7 +954,7 @@ public:
}
GCPtr pGC;
vncHooksGCPtr vncHooksGC;
- GCFuncs* oldFuncs;
+ const GCFuncs* oldFuncs;
ScreenPtr pScreen;
};
@@ -1793,7 +1793,7 @@ static void vncHooksImageText16(Drawable
static void vncHooksImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x,
int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase)
+ CharInfoPtr *ppci, void * pglyphBase)
{
GC_OP_UNWRAPPER(pDrawable, pGC, ImageGlyphBlt);
@@ -1819,7 +1819,7 @@ static void vncHooksImageGlyphBlt(Drawab
static void vncHooksPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x,
int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase)
+ CharInfoPtr *ppci, void * pglyphBase)
{
GC_OP_UNWRAPPER(pDrawable, pGC, PolyGlyphBlt);
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc.116 2013-03-14 18:52:53.000000000 +0100
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc 2014-04-28 16:55:02.593440166 +0200
@@ -81,11 +81,11 @@ static XF86ModuleVersionInfo vncVersRec
_X_EXPORT XF86ModuleData vncModuleData = { &vncVersRec, vncSetup, NULL };
-static pointer
-vncSetup(pointer module, pointer opts, int *errmaj, int *errmin) {
- LoadExtension(&vncExt, FALSE);
+static void *
+vncSetup(void * module, void * opts, int *errmaj, int *errmin) {
+ LoadExtensionList(&vncExt, 1, FALSE);
/* Need a non-NULL return value to indicate success */
- return (pointer)1;
+ return (void *)1;
}
static void vncExtensionInitWithParams(INITARGS)
diff -up tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc.116 tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc
--- tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc.116 2014-03-19 13:11:09.000000000 +0100
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc 2014-04-28 16:53:12.580314921 +0200
@@ -103,7 +103,7 @@ extern "C" {
"See http://www.tigervnc.org for information on TigerVNC.\n")
-extern char *display;
+extern const char *display;
extern int monitorResolution;
#define VFB_DEFAULT_WIDTH 1024
@@ -762,7 +762,7 @@ vfbUninstallColormap(ColormapPtr pmap)
curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,
RT_COLORMAP);
#else
- dixLookupResourceByType((pointer *) &curpmap, pmap->pScreen->defColormap,
+ dixLookupResourceByType((void * *) &curpmap, pmap->pScreen->defColormap,
RT_COLORMAP, serverClient, DixUnknownAccess);
#endif
(*pmap->pScreen->InstallColormap)(curpmap);
@@ -1597,7 +1597,7 @@ vfbScreenInit(ScreenPtr pScreen, int arg
} /* end vfbScreenInit */
-static void vfbClientStateChange(CallbackListPtr*, pointer, pointer) {
+static void vfbClientStateChange(CallbackListPtr*, void *, void *) {
dispatchException &= ~DE_RESET;
}
@@ -1625,7 +1625,7 @@ InitOutput(ScreenInfo *screenInfo, int a
#if XORG >= 113
#ifdef GLXEXT
if (serverGeneration == 1)
- LoadExtension(&glxExt, TRUE);
+ LoadExtensionList(&glxExt, 1, TRUE);
#endif
#endif

View File

@ -1,12 +0,0 @@
diff -up tigervnc-1.3.0/vncviewer/Viewport.cxx.cursor tigervnc-1.3.0/vncviewer/Viewport.cxx
--- tigervnc-1.3.0/vncviewer/Viewport.cxx.cursor 2013-12-17 13:28:23.170400013 +0000
+++ tigervnc-1.3.0/vncviewer/Viewport.cxx 2013-12-17 13:29:46.095784064 +0000
@@ -931,7 +931,7 @@ void Viewport::popupContextMenu()
// Back to our proper mouse pointer.
#ifdef HAVE_FLTK_CURSOR
- if (Fl::belowmouse() == this)
+ if (Fl::belowmouse() == this && cursor)
window()->cursor(cursor, cursorHotspot.x, cursorHotspot.y);
#endif

View File

@ -1,7 +1,7 @@
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster 2013-07-12 09:30:50.551459439 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc 2013-07-12 09:38:31.037480528 +0100
@@ -232,10 +232,7 @@ void InputDevice::PrepareInputDevices(vo
diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.cc
--- tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.cc.getmaster 2015-01-23 23:37:23.000000000 +0000
+++ tigervnc-1.4.2/unix/xserver/hw/vnc/InputXKB.cc 2015-02-13 12:32:54.398502082 +0000
@@ -208,10 +208,7 @@ void InputDevice::PrepareInputDevices(vo
unsigned InputDevice::getKeyboardState(void)
{
@ -13,7 +13,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
}
unsigned InputDevice::getLevelThreeMask(void)
@@ -256,7 +253,7 @@ unsigned InputDevice::getLevelThreeMask(
@@ -232,7 +229,7 @@ unsigned InputDevice::getLevelThreeMask(
return 0;
}
@ -22,7 +22,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
act = XkbKeyActionPtr(xkb, keycode, state);
if (act == NULL)
@@ -281,7 +278,7 @@ KeyCode InputDevice::pressShift(void)
@@ -257,7 +254,7 @@ KeyCode InputDevice::pressShift(void)
if (state & ShiftMask)
return 0;
@ -31,7 +31,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
XkbAction *act;
unsigned char mask;
@@ -318,7 +315,7 @@ std::list<KeyCode> InputDevice::releaseS
@@ -294,7 +291,7 @@ std::list<KeyCode> InputDevice::releaseS
if (!(state & ShiftMask))
return keys;
@ -40,7 +40,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
xkb = master->key->xkbInfo->desc;
for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
XkbAction *act;
@@ -371,7 +368,7 @@ KeyCode InputDevice::pressLevelThree(voi
@@ -347,7 +344,7 @@ KeyCode InputDevice::pressLevelThree(voi
return 0;
}
@ -49,7 +49,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
act = XkbKeyActionPtr(xkb, keycode, state);
if (act == NULL)
@@ -399,7 +396,7 @@ std::list<KeyCode> InputDevice::releaseL
@@ -375,7 +372,7 @@ std::list<KeyCode> InputDevice::releaseL
if (!(state & mask))
return keys;
@ -58,7 +58,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
xkb = master->key->xkbInfo->desc;
for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
XkbAction *act;
@@ -440,7 +437,7 @@ KeyCode InputDevice::keysymToKeycode(Key
@@ -416,7 +413,7 @@ KeyCode InputDevice::keysymToKeycode(Key
if (new_state != NULL)
*new_state = state;
@ -67,7 +67,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
unsigned int state_out;
KeySym dummy;
@@ -497,7 +494,7 @@ bool InputDevice::isLockModifier(KeyCode
@@ -473,7 +470,7 @@ bool InputDevice::isLockModifier(KeyCode
XkbDescPtr xkb;
XkbAction *act;
@ -76,7 +76,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
act = XkbKeyActionPtr(xkb, keycode, state);
if (act == NULL)
@@ -535,7 +532,7 @@ bool InputDevice::isAffectedByNumLock(Ke
@@ -511,7 +508,7 @@ bool InputDevice::isAffectedByNumLock(Ke
if (numlock_keycode == 0)
return false;
@ -85,7 +85,7 @@ diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.getmaster tigervnc-1.3.0
act = XkbKeyActionPtr(xkb, numlock_keycode, state);
if (act == NULL)
@@ -569,7 +566,7 @@ KeyCode InputDevice::addKeysym(KeySym ke
@@ -545,7 +542,7 @@ KeyCode InputDevice::addKeysym(KeySym ke
KeySym *syms;
KeySym upper, lower;

View File

@ -1,383 +0,0 @@
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc.inputreset 2013-07-01 13:41:24.000000000 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc 2014-07-14 13:08:01.482660946 +0100
@@ -68,6 +68,9 @@ rfb::BoolParameter avoidShiftNumLock("Av
#define BUTTONS 7
+class InputDevice *vncInputDevice;
+InputDevice InputDevice::singleton;
+
/* Event queue is shared between all devices. */
#if XORG == 15
static xEvent *eventq = NULL;
@@ -116,11 +119,13 @@ static void enqueueEvents(DeviceIntPtr d
}
#endif /* XORG < 111 */
-InputDevice::InputDevice(rfb::VNCServerST *_server)
- : server(_server), initialized(false), oldButtonMask(0)
+InputDevice::InputDevice()
+ : oldButtonMask(0)
{
int i;
+ vncInputDevice = this;
+
#if XORG < 111
initEventq();
#endif
@@ -195,16 +200,12 @@ void InputDevice::PointerMove(const rfb:
cursorPos = pos;
}
-void InputDevice::PointerSync(void)
+const rfb::Point &InputDevice::getPointerPos(void)
{
- if (cursorPos.equals(oldCursorPos))
- return;
-
- oldCursorPos = cursorPos;
- server->setCursorPos(cursorPos);
+ return cursorPos;
}
-static int pointerProc(DeviceIntPtr pDevice, int onoff)
+int InputDevice::pointerProc(DeviceIntPtr pDevice, int onoff)
{
BYTE map[BUTTONS + 1];
DevicePtr pDev = (DevicePtr)pDevice;
@@ -229,6 +230,8 @@ static int pointerProc(DeviceIntPtr pDev
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);
+ btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT);
+ btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT);
axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
@@ -253,10 +256,9 @@ static int pointerProc(DeviceIntPtr pDev
case DEVICE_OFF:
pDev->on = FALSE;
break;
-#if 0
case DEVICE_CLOSE:
+ singleton.pointerDev = NULL;
break;
-#endif
}
return Success;
@@ -269,9 +271,7 @@ static void keyboardBell(int percent, De
vncBell();
}
-extern void GetInitKeyboardMap(KeySymsPtr keysyms, CARD8 *modmap);
-
-static int keyboardProc(DeviceIntPtr pDevice, int onoff)
+int InputDevice::keyboardProc(DeviceIntPtr pDevice, int onoff)
{
#if XORG < 17
KeySymsRec keySyms;
@@ -298,6 +298,9 @@ static int keyboardProc(DeviceIntPtr pDe
case DEVICE_OFF:
pDev->on = FALSE;
break;
+ case DEVICE_CLOSE:
+ singleton.keyboardDev = NULL;
+ break;
}
return Success;
@@ -305,11 +308,9 @@ static int keyboardProc(DeviceIntPtr pDe
void InputDevice::InitInputDevice(void)
{
- if (initialized)
+ if ((pointerDev != NULL) || (keyboardDev != NULL))
return;
- initialized = true;
-
#if XORG < 17
pointerDev = AddInputDevice(
#if XORG >= 16
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputCore.cc.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/InputCore.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/InputCore.cc.inputreset 2013-07-01 13:41:24.000000000 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/InputCore.cc 2014-07-14 13:08:01.483660952 +0100
@@ -174,7 +174,7 @@ KeySym keyboardMap[MAP_LEN * KEYSYMS_PER
XK_Menu, NoSymbol,
};
-void GetInitKeyboardMap(KeySymsPtr keysyms, CARD8 *modmap)
+void InputDevice::GetInitKeyboardMap(KeySymsPtr keysyms, CARD8 *modmap)
{
int i;
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/Input.h.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/Input.h
--- tigervnc-1.3.0/unix/xserver/hw/vnc/Input.h.inputreset 2013-07-01 13:41:24.000000000 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/Input.h 2014-07-14 13:08:01.483660952 +0100
@@ -29,20 +29,27 @@
#include <list>
-#include <rfb/VNCServerST.h>
+#include <rdr/types.h>
+#include <rfb/Rect.h>
extern "C" {
#include "input.h"
+/* The Xorg headers define macros that wreak havoc with STL */
+#undef max
};
#include "xorg-version.h"
-/* Represents input device (keyboard + pointer) */
+/*
+ * Represents input device (keyboard + pointer)
+ *
+ * Is a singleton as input devices are global in the X server so
+ * we do not have one per desktop (i.e. per screen).
+ */
+extern class InputDevice *vncInputDevice;
+
class InputDevice {
public:
- /* Create new InputDevice instance */
- InputDevice(rfb::VNCServerST *_server);
-
/*
* Press or release buttons. Relationship between buttonMask and
* buttons is specified in RFB protocol.
@@ -52,27 +59,28 @@ public:
/* Move pointer to target location (point coords are absolute). */
void PointerMove(const rfb::Point &point);
- /*
- * Send pointer position to clients. If not called then Move() calls
- * won't be visible to VNC clients.
- */
- void PointerSync(void);
+ /* Get current known location of the pointer */
+ const rfb::Point &getPointerPos(void);
+ /* Press or release one or more keys to get the given symbol */
void KeyboardPress(rdr::U32 keysym) { keyEvent(keysym, true); }
void KeyboardRelease(rdr::U32 keysym) { keyEvent(keysym, false); }
/*
- * Init input device. This cannot be done in the constructor
- * because constructor is called during X server extensions
- * initialization. Devices must be initialized after core
- * pointer/keyboard initialization which is actually after extesions
- * initialization. Check InitExtensions(), InitCoreDevices() and
- * InitInput() calls in dix/main.c. Instead it is called from
- * XserverDesktop at an appropriate time.
+ * Init input device.
+ * This has to be called after core pointer/keyboard
+ * initialization which unfortunately is after extesions
+ * initialization (which means we cannot call it in
+ * vncExtensionInit(). Check InitExtensions(),
+ * InitCoreDevices() and InitInput() calls in dix/main.c.
+ * Instead we call it from XserverDesktop at an appropriate
+ * time.
*/
void InitInputDevice(void);
private:
+ InputDevice();
+
void keyEvent(rdr::U32 keysym, bool down);
/* Backend dependent functions below here */
@@ -96,22 +104,28 @@ private:
KeyCode addKeysym(KeySym keysym, unsigned state);
private:
+ static int pointerProc(DeviceIntPtr pDevice, int onoff);
+ static int keyboardProc(DeviceIntPtr pDevice, int onoff);
+
#if XORG >= 17
static void vncXkbProcessDeviceEvent(int screenNum,
InternalEvent *event,
DeviceIntPtr dev);
+#else
+ static void GetInitKeyboardMap(KeySymsPtr keysyms, CARD8 *modmap);
#endif
private:
- rfb::VNCServerST *server;
- bool initialized;
DeviceIntPtr keyboardDev;
DeviceIntPtr pointerDev;
int oldButtonMask;
- rfb::Point cursorPos, oldCursorPos;
+ rfb::Point cursorPos;
KeySym pressedKeys[256];
+
+private:
+ static InputDevice singleton;
};
#endif
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc.inputreset 2014-07-14 13:07:53.145619157 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/InputXKB.cc 2014-07-14 13:08:01.484660958 +0100
@@ -42,18 +42,6 @@ extern "C" {
#undef class
}
-#if XORG < 19
-static int vncXkbScreenPrivateKeyIndex;
-static DevPrivateKey vncXkbScreenPrivateKey = &vncXkbScreenPrivateKeyIndex;
-#else
-static DevPrivateKeyRec vncXkbPrivateKeyRec;
-#define vncXkbScreenPrivateKey (&vncXkbPrivateKeyRec)
-#endif
-
-#define vncXkbScreenPrivate(pScreen) \
- (*(InputDevice**) dixLookupPrivate(&(pScreen)->devPrivates, \
- vncXkbScreenPrivateKey))
-
#ifndef KEYBOARD_OR_FLOAT
#define KEYBOARD_OR_FLOAT MASTER_KEYBOARD
#endif
@@ -209,18 +197,6 @@ static unsigned XkbKeyEffectiveGroup(Xkb
void InputDevice::PrepareInputDevices(void)
{
-#if XORG < 19
- if (!dixRequestPrivate(vncXkbScreenPrivateKey, sizeof(InputDevice*)))
- FatalError("Failed to register TigerVNC XKB screen key\n");
-#else
- if (!dixRegisterPrivateKey(vncXkbScreenPrivateKey, PRIVATE_SCREEN,
- sizeof(InputDevice*)))
- FatalError("Failed to register TigerVNC XKB screen key\n");
-#endif
-
- for (int scr = 0; scr < screenInfo.numScreens; scr++)
- vncXkbScreenPrivate(screenInfo.screens[scr]) = this;
-
/*
* Not ideal since these callbacks do not stack, but it's the only
* decent way we can reliably catch events for both the slave and
@@ -633,10 +609,9 @@ void InputDevice::vncXkbProcessDeviceEve
InternalEvent *event,
DeviceIntPtr dev)
{
- InputDevice *self = vncXkbScreenPrivate(screenInfo.screens[screenNum]);
unsigned int backupctrls;
- if (event->device_event.sourceid == self->keyboardDev->id) {
+ if (event->device_event.sourceid == singleton.keyboardDev->id) {
XkbControlsPtr ctrls;
/*
@@ -658,7 +633,7 @@ void InputDevice::vncXkbProcessDeviceEve
dev->c_public.processInputProc(event, dev);
- if (event->device_event.sourceid == self->keyboardDev->id) {
+ if (event->device_event.sourceid == singleton.keyboardDev->id) {
XkbControlsPtr ctrls;
ctrls = dev->key->xkbInfo->desc->ctrls;
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/xf86vncModule.cc.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/xf86vncModule.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/xf86vncModule.cc.inputreset 2013-07-01 13:41:24.000000000 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/xf86vncModule.cc 2014-07-14 13:08:01.487660972 +0100
@@ -112,9 +112,9 @@ static void vncExtensionInitWithParams(I
i.param->setParam(val);
}
}
-
- vncExtensionInit();
}
+
+ vncExtensionInit();
}
}
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.cc.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.cc.inputreset 2014-07-14 13:07:53.140619132 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.cc 2014-07-14 13:08:01.486660967 +0100
@@ -157,15 +157,12 @@ XserverDesktop::XserverDesktop(ScreenPtr
if (httpListener)
httpServer = new FileHTTPServer(this);
-
- inputDevice = new InputDevice(server);
}
XserverDesktop::~XserverDesktop()
{
if (!directFbptr)
delete [] data;
- delete inputDevice;
delete httpServer;
delete server;
}
@@ -583,7 +580,7 @@ void XserverDesktop::blockHandler(fd_set
// so we abuse the fact that this routine will be called first thing
// once the dix is done initialising.
// [1] Technically Xvnc has InitInput(), but libvnc.so has nothing.
- inputDevice->InitInputDevice();
+ vncInputDevice->InitInputDevice();
try {
int nextTimeout;
@@ -691,7 +688,11 @@ void XserverDesktop::wakeupHandler(fd_se
}
}
- inputDevice->PointerSync();
+ // We are responsible for propagating mouse movement between clients
+ if (!oldCursorPos.equals(vncInputDevice->getPointerPos())) {
+ oldCursorPos = vncInputDevice->getPointerPos();
+ server->setCursorPos(oldCursorPos);
+ }
}
// Then let the timers do some processing. Rescheduling is done in
@@ -818,8 +819,8 @@ void XserverDesktop::approveConnection(v
void XserverDesktop::pointerEvent(const Point& pos, int buttonMask)
{
- inputDevice->PointerMove(pos);
- inputDevice->PointerButtonAction(buttonMask);
+ vncInputDevice->PointerMove(pos);
+ vncInputDevice->PointerButtonAction(buttonMask);
}
void XserverDesktop::clientCutText(const char* str, int len)
@@ -1136,7 +1137,7 @@ void XserverDesktop::lookup(int index, i
void XserverDesktop::keyEvent(rdr::U32 keysym, bool down)
{
if (down)
- inputDevice->KeyboardPress(keysym);
+ vncInputDevice->KeyboardPress(keysym);
else
- inputDevice->KeyboardRelease(keysym);
+ vncInputDevice->KeyboardRelease(keysym);
}
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.h.inputreset tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.h
--- tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.h.inputreset 2013-07-01 13:41:24.000000000 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/XserverDesktop.h 2014-07-14 13:08:01.486660967 +0100
@@ -133,7 +133,6 @@ private:
#endif
ScreenPtr pScreen;
- InputDevice *inputDevice;
rfb::VNCServerST* server;
rfb::HTTPServer* httpServer;
network::TcpListener* listener;
@@ -153,5 +152,7 @@ private:
typedef std::map<RROutputPtr, rdr::U32> OutputIdMap;
OutputIdMap outputIdMap;
#endif
+
+ rfb::Point oldCursorPos;
};
#endif

View File

@ -1,6 +1,6 @@
diff -up tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am.gethomedir tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am
--- tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am.gethomedir 2012-08-22 15:52:01.876216608 +0200
+++ tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am 2012-08-22 15:52:45.973143684 +0200
diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/Makefile.am.libvnc-os tigervnc-1.4.2/unix/xserver/hw/vnc/Makefile.am
--- tigervnc-1.4.2/unix/xserver/hw/vnc/Makefile.am.libvnc-os 2015-02-13 13:22:19.519322622 +0000
+++ tigervnc-1.4.2/unix/xserver/hw/vnc/Makefile.am 2015-02-13 13:22:19.521322636 +0000
@@ -5,6 +5,7 @@ RFB_LIB=$(LIB_DIR)/rfb/librfb.la
RDR_LIB=$(LIB_DIR)/rdr/librdr.la
NETWORK_LIB=$(LIB_DIR)/network/libnetwork.la
@ -8,8 +8,8 @@ diff -up tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am.gethomedir tigervnc-1.2.
+OS_LIB=$(LIB_DIR)/os/libos.la
COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(XREGION_LIB)
noinst_LTLIBRARIES = libvnccommon.la
@@ -55,7 +56,7 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I
# Hack to get the C headers to work when included from C++ code
@@ -58,7 +59,7 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I
libvnc_la_LDFLAGS = -module -avoid-version -Wl,-z,now

View File

@ -1,20 +1,6 @@
diff -up tigervnc-1.2.80-20130314svn5065/unix/vncserver.man.manpages tigervnc-1.2.80-20130314svn5065/unix/vncserver.man
--- tigervnc-1.2.80-20130314svn5065/unix/vncserver.man.manpages 2013-07-03 12:44:03.820392690 +0100
+++ tigervnc-1.2.80-20130314svn5065/unix/vncserver.man 2013-07-03 12:44:44.222587028 +0100
@@ -92,6 +92,10 @@ argument. Thus, you can invoke "vncserv
end of your xstartup file after a particular application exits.
.TP
+.B \-list
+Lists running VNC servers.
+
+.TP
.B \-fp \fIfont-path\fP
If the vncserver script detects that the X Font Server (XFS) is running, it
will attempt to start Xvnc and configure Xvnc to use XFS for font handling.
diff -up tigervnc-1.2.80-20130314svn5065/unix/vncserver.manpages tigervnc-1.2.80-20130314svn5065/unix/vncserver
--- tigervnc-1.2.80-20130314svn5065/unix/vncserver.manpages 2013-07-03 12:39:08.754980784 +0100
+++ tigervnc-1.2.80-20130314svn5065/unix/vncserver 2013-07-03 12:43:57.932364387 +0100
diff -up tigervnc-1.4.2/unix/vncserver.manpages tigervnc-1.4.2/unix/vncserver
--- tigervnc-1.4.2/unix/vncserver.manpages 2015-02-12 19:39:32.253788841 +0000
+++ tigervnc-1.4.2/unix/vncserver 2015-02-12 19:39:32.326789294 +0000
@@ -551,6 +551,7 @@ sub Usage
" [-geometry <width>x<height>]\n".
" [-pixelformat rgbNNN|bgrNNN]\n".
@ -23,105 +9,10 @@ diff -up tigervnc-1.2.80-20130314svn5065/unix/vncserver.manpages tigervnc-1.2.80
" [-fg]\n".
" [-autokill]\n".
" <Xvnc-options>...\n\n".
diff -up tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.cxx.manpages tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.cxx
diff -up tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.man.manpages tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.man
--- tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.man.manpages 2013-07-03 12:46:17.814038117 +0100
+++ tigervnc-1.2.80-20130314svn5065/unix/x0vncserver/x0vncserver.man 2013-07-03 12:58:32.814621597 +0100
@@ -68,7 +68,13 @@ to accept connections from any IP addres
Specify which security scheme to use for incoming connections. Valid values
are \fBNone\fP and \fBVncAuth\fP. Default is \fBVncAuth\fP.
.TP
-.B PasswordFile
+.B pam_server
+Service name for pam password validation (default is "vnc").
+.TP
+.B PlainUsers
+Users permission to access via Plain security type.
+.TP
+.B PasswordFile, rfbauth
Password file for VNC authentication. There is no default, you should
specify the password file explicitly. Password file should be created with
the \fBvncpasswd\fP(1) utility.
@@ -113,6 +119,16 @@ Accept key press and release events from
.B AcceptPointerEvents
Accept pointer events from clients. Default is on.
.TP
+.B AcceptCutText
+Accept clipboard updates from clients. Default is on.
+.TP
+.B MaxCutText
+Maximum permitted length of an incoming clipboard update (default is
+262144).
+.TP
+.B SendCutText
+Send clipboard changes to clients. Default is on.
+.TP
.B RemapKeys
Comma-separated list of incoming keysyms to remap. Mappings are expressed as
two hex values, prefixed by \fB0x\fP, and separated by \fB->\fP (`dash' and
@@ -154,23 +170,6 @@ clients may choose video selection thems
\fBVideoArea\fP parameter will take effect. If the argument is empty, no
video area is set (this is the default).
.TP
-.B VideoPriority
-Specify the priority of sending video updates. \fBx0vncserver\fP can be
-instructed to treat certain rectangular part of the screen as a video area
-and handle it in a special way for improved performance (see documentation on
-the \fBVideoArea\fP parameter). \fBVideoPriority\fP value controls how often
-video area will be sent to clients as compared to the rest of the screen.
-The priority must be an integer between 0 and 8, and the default value is 2.
-
-\fBVideoPriority\fP set to 1 gives the same priority both to video and to
-other pixels. Higher values give more priority to video. For example, the
-value 5 specifies that the rate of sending video will be five times higher
-than the rate of updating the rest of the screen. If \fBVideoPriority\fP is
-set to 0, it gives equal priority to video and other updates (just like the
-value 1) and also disables special encoding for video data. In other words,
-\fBVideoPriority\fP video area will be sent as a part of other screen
-contents.
-.TP
.B CompareFB
Perform pixel comparison on framebuffer to reduce unnecessary updates.
Default is on.
@@ -185,15 +184,6 @@ This enables system-specific access to c
screen (the default X visual often provides 256 colors). Also, in overlay
mode, \fBx0vncserver\fP can show correct mouse cursor. Default is on.
.TP
-.B UseHardwareJPEG
-Use hardware-accelerated JPEG compressor for video if available.
-\fBx0vncserver\fP can be instructed to treat certain rectangular part of the
-screen as a video area and handle it in a special way for improved
-performance. If the client supports Tight encoding and JPEG compression,
-such video areas will be sent as JPEG-encoded rectangles. And if this option
-is on, compression will be hardware-accelerated (currently, supported only in
-SGI/IRIX equipped with appropriate hardware). Default is on.
-.TP
.B ZlibLevel
Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
Acceptable values are between 0 and 9. Default is to use the standard
@@ -222,6 +212,18 @@ Terminate after \fIN\fP seconds of user
.B ClientWaitTimeMillis
The number of milliseconds to wait for a client which is no longer
responding. Default is 20000.
+.TP
+.B DeferUpdate
+Time in milliseconds to defer updates (default is 1).
+.TP
+.B AlwaysSetDeferUpdateTimer
+Always reset the defer update timer on every change.
+.TP
+.B x509key
+Path to key of the x509 certificate in PEM format.
+.TP
+.B 509cert
+Path to x509 certificate in PEM format.
.SH SEE ALSO
.BR Xvnc (1),
.BR vncpasswd (1),
diff -up tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.cxx.manpages tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.cxx
--- tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.cxx.manpages 2013-07-03 12:00:58.005856116 +0100
+++ tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.cxx 2013-07-03 12:04:26.083023050 +0100
@@ -261,6 +261,11 @@ static void usage(const char *programNam
diff -up tigervnc-1.4.2/vncviewer/vncviewer.cxx.manpages tigervnc-1.4.2/vncviewer/vncviewer.cxx
--- tigervnc-1.4.2/vncviewer/vncviewer.cxx.manpages 2015-01-23 23:37:23.000000000 +0000
+++ tigervnc-1.4.2/vncviewer/vncviewer.cxx 2015-02-12 19:39:32.327789300 +0000
@@ -265,6 +265,11 @@ static void usage(const char *programNam
" %s [parameters] -listen [port] [parameters]\n",
programName, programName);
fprintf(stderr,"\n"
@ -133,104 +24,28 @@ diff -up tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.cxx.manpages tigerv
"Parameters can be turned on with -<param> or off with -<param>=0\n"
"Parameters which take a value can be specified as "
"-<param> <value>\n"
diff -up tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.man.manpages tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.man
--- tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.man.manpages 2013-07-03 11:40:48.905078300 +0100
+++ tigervnc-1.2.80-20130314svn5065/vncviewer/vncviewer.man 2013-07-03 12:00:13.116604372 +0100
@@ -113,12 +113,53 @@ Xvnc supports reverse connections with a
.B vncconfig.
diff -up tigervnc-1.4.2/vncviewer/vncviewer.man.manpages tigervnc-1.4.2/vncviewer/vncviewer.man
--- tigervnc-1.4.2/vncviewer/vncviewer.man.manpages 2015-02-12 19:39:32.327789300 +0000
+++ tigervnc-1.4.2/vncviewer/vncviewer.man 2015-02-13 09:54:55.042903357 +0000
@@ -219,6 +219,10 @@ This option specifies the preferred enco
Disable lossy JPEG compression in Tight encoding. Default is off.
.
.TP
-.B \-passwd \fIpassword-file\fP
+.B \-passwd \fIpassword-file\fP, \-PasswordFile \fIpassword-file\fP
If you are on a filesystem which gives you access to the password file used by
the server, you can specify it here to avoid typing it in. It will usually be
"~/.vnc/passwd".
.TP
+.B \-DotWhenNoCursor
+Show the dot cursor when the server sends an invisible cursor.
+
+.TP
+.B \-PointerEventInterval
+Time in milliseconds to rate-limit successive pointer events.
+
+.TP
+.B \-ImprovedHextile
+Try harder to compress data (default).
+
+.
+.TP
+.B \-QualityLevel \fIlevel\fP
+JPEG quality level (default is 8).
+
+.TP
+.B \-NoJPEG
+Disable lossy JPEG compression in Tight encoding.
+
+.TP
+.B CompressLevel \fIlevel\fP
+Use specified compression level (default is 2).
+
+.TP
+.B CustomCompressLevel \fIlevel\fP
+Use custom compression level. Default is CompressLevel is specified.
+
+.TP
+.B \-SendPrimary
+Send the primary selection and cut buffer to the server as well as the
+clipboard selection (default).
+
+.TP
+.B \-SendClipboard
+Send clipboard changes to the server (default).
+
+.TP
+.B \-AcceptClipboard
+Accept clipboard changes from the server (default).
+
+.TP
.B \-Shared
When you make a connection to a VNC server, all other existing connections are
normally closed. This option requests that they be left open, allowing you to
@@ -140,6 +181,19 @@ Maximize viewer window.
Start in full-screen mode.
.TP
+.B \-FullScreenAllMonitors
+Enable full screen over all monitors (default).
+
+.TP
+.B \-FullscreenSystemKeys
+Pass special keys directly to the server in full-screen mode.
+
+.TP
+.B \-RemoteResize
+Dynamically resize the remote desktop size as the size of the local
+client window changes (default).
+
+.TP
.B \-DesktopSize \fIwidth\fPx\fIheight\fP
Instead of keeping the existing remote screen size, the client will attempt to
switch to the specified since when connecting. If the server does not support
@@ -214,6 +268,22 @@ command is executed with the environment
.B \-QualityLevel \fIlevel\fP
JPEG quality level. 0 = Low, 9 = High. May be adjusted automatically if
\fB-AutoSelect\fP is turned on. Default is 8.
@@ -271,6 +275,10 @@ command is executed with the environment
\fIR\fR, and \fIG\fR taken the values of the local port number, the remote
host, the port number on the remote host, and the gateway machine
respectively.
+.
+.TP
+\fB\-ZlibLevel\fR \fIlevel\fR
+.B \-ZlibLevel
+Zlib compression level.
+
+.TP
+.B \-x509crl \fIfile\fP
+X509 CRL file
+
+.TP
+.B \-x509ca \fIfile\fP
+X509 CA certificate
+
+.TP
+.B \-SecurityTypes \fItypes\fP
+Specify which security scheme to use.
+
.SH SEE ALSO
.BR Xvnc (1),
.BR vncpasswd (1),
.SH FILES
.TP

View File

@ -1,25 +0,0 @@
diff -up tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc.pointersync tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc
--- tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc.pointersync 2014-07-14 16:27:49.412251632 +0100
+++ tigervnc-1.3.0/unix/xserver/hw/vnc/Input.cc 2014-07-14 16:29:06.968643301 +0100
@@ -1,5 +1,5 @@
/* Copyright (C) 2009 TightVNC Team
- * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009, 2014 Red Hat, Inc.
* Copyright 2013 Pierre Ossman for Cendio AB
*
* This is free software; you can redistribute it and/or modify
@@ -202,6 +202,14 @@ void InputDevice::PointerMove(const rfb:
const rfb::Point &InputDevice::getPointerPos(void)
{
+ if (pointerDev != NULL) {
+ int x, y;
+
+ GetSpritePosition (pointerDev, &x, &y);
+ cursorPos.x = x;
+ cursorPos.y = y;
+ }
+
return cursorPos;
}

View File

@ -1,13 +0,0 @@
diff -up tigervnc-1.2.80-20130314svn5065/unix/xserver/hw/vnc/XserverDesktop.cc.jx tigervnc-1.2.80-20130314svn5065/unix/xserver/hw/vnc/XserverDesktop.cc
--- tigervnc-1.2.80-20130314svn5065/unix/xserver/hw/vnc/XserverDesktop.cc.jx 2012-08-27 09:02:47.000000000 -0400
+++ tigervnc-1.2.80-20130314svn5065/unix/xserver/hw/vnc/XserverDesktop.cc 2013-06-17 09:42:14.310725996 -0400
@@ -479,6 +479,9 @@ void XserverDesktop::setCursor(CursorPtr
}
} else {
#endif
+ if (!cmap)
+ return;
+
xColorItem fg, bg;
fg.red = cursor->foreRed;
fg.green = cursor->foreGreen;

View File

@ -1,137 +0,0 @@
diff -up xorg-server-1.16.0/configure.ac.vnc xorg-server-1.16.0/configure.ac
--- xorg-server-1.16.0/configure.ac.vnc 2014-07-17 08:00:51.000000000 +0100
+++ xorg-server-1.16.0/configure.ac 2014-09-03 10:21:49.506109235 +0100
@@ -74,6 +74,7 @@ dnl forcing an entire recompile.x
AC_CONFIG_HEADERS(include/version-config.h)
AM_PROG_AS
+AC_PROG_CXX
AC_PROG_LN_S
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
@@ -1795,6 +1796,10 @@ if test "x$XVFB" = xyes; then
AC_SUBST([XVFB_SYS_LIBS])
fi
+dnl Xvnc DDX
+AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
+AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
+AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
dnl Xnest DDX
@@ -1830,6 +1835,8 @@ if test "x$XORG" = xauto; then
fi
AC_MSG_RESULT([$XORG])
+AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+
if test "x$XORG" = xyes; then
XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
@@ -2051,7 +2058,6 @@ if test "x$XORG" = xyes; then
AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
@@ -2589,6 +2595,7 @@ hw/dmx/Makefile
hw/dmx/man/Makefile
hw/vfb/Makefile
hw/vfb/man/Makefile
+hw/vnc/Makefile
hw/xnest/Makefile
hw/xnest/man/Makefile
hw/xwin/Makefile
diff -up xorg-server-1.16.0/hw/Makefile.am.vnc xorg-server-1.16.0/hw/Makefile.am
--- xorg-server-1.16.0/hw/Makefile.am.vnc 2014-04-16 21:24:00.000000000 +0100
+++ xorg-server-1.16.0/hw/Makefile.am 2014-09-03 10:21:49.507109234 +0100
@@ -38,7 +38,8 @@ SUBDIRS = \
$(DMX_SUBDIRS) \
$(KDRIVE_SUBDIRS) \
$(XQUARTZ_SUBDIRS) \
- $(XWAYLAND_SUBDIRS)
+ $(XWAYLAND_SUBDIRS) \
+ vnc
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland
diff -up xorg-server-1.16.0/mi/miinitext.c.vnc xorg-server-1.16.0/mi/miinitext.c
--- xorg-server-1.16.0/mi/miinitext.c.vnc 2014-04-16 21:24:00.000000000 +0100
+++ xorg-server-1.16.0/mi/miinitext.c 2014-09-03 10:21:49.508109234 +0100
@@ -111,6 +111,10 @@ SOFTWARE.
#include "micmap.h"
#include "globals.h"
+#ifdef TIGERVNC
+extern void vncExtensionInit(INITARGS);
+#endif
+
/* The following is only a small first step towards run-time
* configurable extensions.
*/
@@ -235,6 +239,9 @@ EnableDisableExtensionError(const char *
/* List of built-in (statically linked) extensions */
static const ExtensionModule staticExtensions[] = {
+#ifdef TIGERVNC
+ {vncExtensionInit, "VNC-EXTENSION", NULL},
+#endif
{GEExtensionInit, "Generic Event Extension", &noGEExtension},
{ShapeExtensionInit, "SHAPE", NULL},
#ifdef MITSHM
diff -up xorg-server-1.16.0/os/WaitFor.c.vnc xorg-server-1.16.0/os/WaitFor.c
--- xorg-server-1.16.0/os/WaitFor.c.vnc 2014-02-05 03:08:57.000000000 +0000
+++ xorg-server-1.16.0/os/WaitFor.c 2014-09-03 10:21:49.508109234 +0100
@@ -125,6 +125,9 @@ static void DoTimer(OsTimerPtr timer, CA
static void CheckAllTimers(void);
static OsTimerPtr timers = NULL;
+extern void vncWriteBlockHandler(fd_set *fds);
+extern void vncWriteWakeupHandler(int nfds, fd_set *fds);
+
/*****************
* WaitForSomething:
* Make the server suspend until there is
@@ -150,6 +153,7 @@ WaitForSomething(int *pClientsReady)
INT32 timeout = 0;
fd_set clientsReadable;
fd_set clientsWritable;
+ fd_set socketsWritable;
int curclient;
int selecterr;
static int nready;
@@ -212,6 +216,9 @@ WaitForSomething(int *pClientsReady)
XFD_COPYSET(&AllSockets, &LastSelectMask);
}
+ FD_ZERO(&socketsWritable);
+ vncWriteBlockHandler(&socketsWritable);
+
BlockHandler((void *) &wt, (void *) &LastSelectMask);
if (NewOutputPending)
FlushAllOutput();
@@ -223,10 +223,20 @@ WaitForSomething(int *pClientsReady)
i = Select(MaxClients, &LastSelectMask, &clientsWritable, NULL, wt);
}
else {
- i = Select(MaxClients, &LastSelectMask, NULL, NULL, wt);
+ if (AnyClientsWriteBlocked)
+ XFD_ORSET(&socketsWritable, &ClientsWriteBlocked, &socketsWritable);
+
+ if (XFD_ANYSET(&socketsWritable)) {
+ i = Select(MaxClients, &LastSelectMask, &socketsWritable, NULL, wt);
+ if (AnyClientsWriteBlocked)
+ XFD_ANDSET(&clientsWritable, &socketsWritable, &ClientsWriteBlocked);
+ } else {
+ i = Select(MaxClients, &LastSelectMask, NULL, NULL, wt);
+ }
}
selecterr = GetErrno();
WakeupHandler(i, (void *) &LastSelectMask);
+ vncWriteWakeupHandler(i, &socketsWritable);
if (i <= 0) { /* An error or timeout occurred */
if (dispatchException)
return 0;

View File

@ -1,69 +0,0 @@
diff -up tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx.zrle-crash tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx
--- tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx.zrle-crash 2013-07-01 13:41:59.000000000 +0100
+++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx 2013-12-12 17:30:48.510007365 +0000
@@ -55,16 +55,19 @@ Encoder* ZRLEEncoder::create(SMsgWriter*
}
ZRLEEncoder::ZRLEEncoder(SMsgWriter* writer_)
- : writer(writer_), zos(0,0,zlibLevel)
+ : writer(writer_)
{
if (sharedMos)
mos = sharedMos;
else
mos = new rdr::MemOutStream(129*1024);
+
+ zos = new rdr::ZlibOutStream(0, 0, zlibLevel);
}
ZRLEEncoder::~ZRLEEncoder()
{
+ delete zos;
if (!sharedMos)
delete mos;
}
@@ -78,10 +81,10 @@ bool ZRLEEncoder::writeRect(const Rect&
switch (writer->bpp()) {
case 8:
- wroteAll = zrleEncode8(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode8(r, mos, zos, imageBuf, maxLen, actual, ig);
break;
case 16:
- wroteAll = zrleEncode16(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode16(r, mos, zos, imageBuf, maxLen, actual, ig);
break;
case 32:
{
@@ -94,16 +97,16 @@ bool ZRLEEncoder::writeRect(const Rect&
if ((fitsInLS3Bytes && pf.isLittleEndian()) ||
(fitsInMS3Bytes && pf.isBigEndian()))
{
- wroteAll = zrleEncode24A(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode24A(r, mos, zos, imageBuf, maxLen, actual, ig);
}
else if ((fitsInLS3Bytes && pf.isBigEndian()) ||
(fitsInMS3Bytes && pf.isLittleEndian()))
{
- wroteAll = zrleEncode24B(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode24B(r, mos, zos, imageBuf, maxLen, actual, ig);
}
else
{
- wroteAll = zrleEncode32(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode32(r, mos, zos, imageBuf, maxLen, actual, ig);
}
break;
}
diff -up tigervnc-1.3.0/common/rfb/ZRLEEncoder.h.zrle-crash tigervnc-1.3.0/common/rfb/ZRLEEncoder.h
--- tigervnc-1.3.0/common/rfb/ZRLEEncoder.h.zrle-crash 2013-07-01 13:42:01.000000000 +0100
+++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.h 2013-12-12 17:30:48.510007365 +0000
@@ -45,7 +45,7 @@ namespace rfb {
private:
ZRLEEncoder(SMsgWriter* writer);
SMsgWriter* writer;
- rdr::ZlibOutStream zos;
+ rdr::ZlibOutStream* zos;
rdr::MemOutStream* mos;
static rdr::MemOutStream* sharedMos;
static int maxLen;

View File

@ -1,6 +1,6 @@
Name: tigervnc
Version: 1.3.1
Release: 11%{?dist}
Version: 1.4.2
Release: 1%{?dist}
Summary: A TigerVNC remote display system
%global _hardened_build 1
@ -44,24 +44,14 @@ Obsoletes: tightvnc < 1.5.0-0.15.20090204svn3586
Patch1: tigervnc-cookie.patch
Patch2: tigervnc11-ldnow.patch
Patch3: tigervnc11-gethomedir.patch
Patch3: tigervnc-libvnc-os.patch
Patch4: tigervnc11-rh692048.patch
Patch5: tigervnc-inetd-nowait.patch
Patch6: tigervnc-setcursor-crash.patch
Patch7: tigervnc-manpages.patch
Patch8: tigervnc-getmaster.patch
Patch9: tigervnc-shebang.patch
Patch10: tigervnc-1.3.0-xserver-1.15.patch
Patch11: tigervnc-format-security.patch
Patch12: tigervnc-zrle-crash.patch
Patch13: tigervnc-cursor.patch
Patch14: tigervnc-xstartup.patch
Patch15: tigervnc-1.3.1-xserver-1.16.patch
Patch16: tigervnc-inputreset.patch
Patch17: tigervnc-pointersync.patch
# This is tigervnc-%{version}/unix/xserver114.patch rebased on the latest xorg
Patch100: tigervnc-xserver-1.14-rebased.patch
%description
Virtual Network Computing (VNC) is a remote display system which
@ -158,7 +148,7 @@ This package contains icons for TigerVNC viewer
%patch1 -p1 -b .cookie
%patch2 -p1 -b .ldnow
%patch3 -p1 -b .gethomedir
%patch3 -p1 -b .libvnc-os
%patch4 -p1 -b .rh692048
cp -r /usr/share/xorg-x11-server-source/* unix/xserver
@ -166,15 +156,13 @@ pushd unix/xserver
for all in `find . -type f -perm -001`; do
chmod -x "$all"
done
%patch100 -p1 -b .vnc
patch -p1 -i ../xserver116.patch
popd
# Applied Debian patch to fix busy loop when run from inetd in nowait
# mode (bug #920373).
%patch5 -p1 -b .inetd-nowait
%patch6 -p1 -b .setcursor-crash
# Synchronise manpages and --help output (bug #980870).
%patch7 -p1 -b .manpages
@ -184,28 +172,12 @@ popd
# Don't use shebang in vncserver script.
%patch9 -p1 -b .shebang
%patch10 -p1 -b .115
# Fixed build failure with -Werror=format-security (bug #1037358).
%patch11 -p1 -b .format-security
# Avoid invalid read when ZRLE connection closed (upstream bug #133).
%patch12 -p1 -b .zrle-crash
# Fixed viewer crash when cursor has not been set (bug #1038701).
%patch13 -p1 -b .cursor
# Clearer xstartup file (bug #923655).
%patch14 -p1 -b .xstartup
%patch15 -p1 -b .116
# Input reset fixes from upstream (bug #1116956).
%patch16 -p1 -b .inputreset
# Keep pointer in sync when using module (upstream bug #152).
%patch17 -p1 -b .pointersync
%build
%ifarch sparcv9 sparc64 s390 s390x
export CFLAGS="$RPM_OPT_FLAGS -fPIC"
@ -376,6 +348,9 @@ fi
%{_datadir}/icons/hicolor/*/apps/*
%changelog
* Fri Feb 13 2015 Tim Waugh <twaugh@redhat.com> - 1.4.2-1
- 1.4.2.
* Tue Sep 9 2014 Tim Waugh <twaugh@redhat.com> - 1.3.1-11
- Added missing part of xserver114.patch (bug #1137023).

View File

@ -1,19 +1,19 @@
diff -up tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityClient.cxx.rh690245 tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityClient.cxx
--- tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityClient.cxx.rh690245 2011-02-21 14:14:16.000000000 +0100
+++ tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityClient.cxx 2011-03-31 09:47:34.519099718 +0200
@@ -45,7 +45,7 @@ StringParameter SecurityClient::secTypes
("SecurityTypes",
"Specify which security scheme to use (None, VncAuth)",
diff -up tigervnc-1.4.2/common/rfb/SecurityClient.cxx.rh692048 tigervnc-1.4.2/common/rfb/SecurityClient.cxx
--- tigervnc-1.4.2/common/rfb/SecurityClient.cxx.rh692048 2015-02-12 18:32:50.168861186 +0000
+++ tigervnc-1.4.2/common/rfb/SecurityClient.cxx 2015-02-12 18:33:13.168003696 +0000
@@ -49,7 +49,7 @@ StringParameter SecurityClient::secTypes
#endif
")",
#ifdef HAVE_GNUTLS
- "X509Plain,TLSPlain,X509Vnc,TLSVnc,X509None,TLSNone,VncAuth,None",
+ "VeNCrypt,X509Plain,TLSPlain,X509Vnc,TLSVnc,X509None,TLSNone,VncAuth,None",
#else
"VncAuth,None",
#endif
diff -up tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx.rh690245 tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx
--- tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx.rh690245 2011-02-21 14:14:16.000000000 +0100
+++ tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx 2011-03-31 09:47:34.519099718 +0200
@@ -67,7 +67,6 @@ const std::list<rdr::U8> Security::GetEn
diff -up tigervnc-1.4.2/common/rfb/Security.cxx.rh692048 tigervnc-1.4.2/common/rfb/Security.cxx
--- tigervnc-1.4.2/common/rfb/Security.cxx.rh692048 2015-01-23 23:37:23.000000000 +0000
+++ tigervnc-1.4.2/common/rfb/Security.cxx 2015-02-12 18:32:50.168861186 +0000
@@ -68,7 +68,6 @@ const std::list<rdr::U8> Security::GetEn
list<rdr::U8> result;
list<U32>::iterator i;
@ -21,7 +21,7 @@ diff -up tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx.rh690245 tigerv
for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
if (*i < 0x100)
result.push_back(*i);
@@ -105,8 +104,6 @@ bool Security::IsSupported(U32 secType)
@@ -106,8 +105,6 @@ bool Security::IsSupported(U32 secType)
for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
if (*i == secType)
return true;
@ -30,14 +30,14 @@ diff -up tigervnc-1.0.90-20110314svn4359/common/rfb/Security.cxx.rh690245 tigerv
return false;
}
diff -up tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityServer.cxx.rh690245 tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityServer.cxx
--- tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityServer.cxx.rh690245 2011-02-21 14:50:17.000000000 +0100
+++ tigervnc-1.0.90-20110314svn4359/common/rfb/SecurityServer.cxx 2011-03-31 10:06:43.595362302 +0200
@@ -39,7 +39,7 @@ StringParameter SecurityServer::secTypes
("SecurityTypes",
"Specify which security scheme to use (None, VncAuth)",
diff -up tigervnc-1.4.2/common/rfb/SecurityServer.cxx.rh692048 tigervnc-1.4.2/common/rfb/SecurityServer.cxx
--- tigervnc-1.4.2/common/rfb/SecurityServer.cxx.rh692048 2015-02-12 18:32:50.168861186 +0000
+++ tigervnc-1.4.2/common/rfb/SecurityServer.cxx 2015-02-12 18:33:24.977076868 +0000
@@ -43,7 +43,7 @@ StringParameter SecurityServer::secTypes
#endif
")",
#ifdef HAVE_GNUTLS
- "VncAuth,TLSVnc",
- "TLSVnc,VncAuth",
+ "VncAuth",
#else
"VncAuth",