summaryrefslogtreecommitdiffstats
path: root/x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch
diff options
context:
space:
mode:
authorrunge <runge>2008-05-12 00:53:11 +0000
committerrunge <runge>2008-05-12 00:53:11 +0000
commitb2306270d0e356108fde0a0710fefa5acb38f6e7 (patch)
tree65695b420f242840d2103bfaa9fb0fc5885bb7c4 /x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch
parentabbdf92a704790374a12d6da5125b4e95595aaac (diff)
downloadlibtdevnc-b2306270d0e356108fde0a0710fefa5acb38f6e7.tar.gz
libtdevnc-b2306270d0e356108fde0a0710fefa5acb38f6e7.zip
Many improvement to the frontend and unix viewer. UltraVNC proxy support,
and other proxy improvements.
Diffstat (limited to 'x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch')
-rw-r--r--x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch1234
1 files changed, 1019 insertions, 215 deletions
diff --git a/x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch b/x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch
index 74d30e0..2120959 100644
--- a/x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch
+++ b/x11vnc/misc/enhanced_tightvnc_viewer/src/patches/tight-vncviewer-full.patch
@@ -446,7 +446,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/Vncviewer vnc_unixsrc/vncview
+
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/vncviewer/argsresources.c
--- vnc_unixsrc.orig/vncviewer/argsresources.c 2007-02-04 17:10:31.000000000 -0500
-+++ vnc_unixsrc/vncviewer/argsresources.c 2008-02-17 13:34:30.000000000 -0500
++++ vnc_unixsrc/vncviewer/argsresources.c 2008-04-28 21:30:05.000000000 -0400
@@ -31,7 +31,7 @@
char *fallback_resources[] = {
@@ -456,7 +456,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
"Vncviewer.translations:\
<Enter>: SelectionToVNC()\\n\
-@@ -45,8 +45,14 @@
+@@ -45,8 +45,58 @@
"*viewport.useRight: True",
"*viewport*Scrollbar*thumb: None",
@@ -465,6 +465,50 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
+ "vncviewer*viewport.horizontal.height: 6 ",
+ "vncviewer*viewport.vertical.width: 6 ",
+
++ "*viewport.horizontal.translations: #override\\n\
++ <KeyPress>Right: StartScroll(Forward)\\n\
++ <KeyRelease>Right: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Left: StartScroll(Backward)\\n\
++ <KeyRelease>Left: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Next: StartScroll(Forward)\\n\
++ <KeyRelease>Next: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Prior: StartScroll(Backward)\\n\
++ <KeyRelease>Prior: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>z: StartScroll(Forward)\\n\
++ <KeyRelease>z: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>a: StartScroll(Backward)\\n\
++ <KeyRelease>a: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>f: StartScroll(Forward)\\n\
++ <KeyRelease>f: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>b: StartScroll(Backward)\\n\
++ <KeyRelease>b: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Down: StartScroll(Forward)\\n\
++ <KeyRelease>Down: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Up: StartScroll(Backward)\\n\
++ <KeyRelease>Up: NotifyScroll(FullLength) EndScroll()",
++
++ "*viewport.vertical.translations: #override\\n\
++ <KeyPress>Down: StartScroll(Forward)\\n\
++ <KeyRelease>Down: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Up: StartScroll(Backward)\\n\
++ <KeyRelease>Up: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Next: StartScroll(Forward)\\n\
++ <KeyRelease>Next: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Prior: StartScroll(Backward)\\n\
++ <KeyRelease>Prior: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>z: StartScroll(Forward)\\n\
++ <KeyRelease>z: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>a: StartScroll(Backward)\\n\
++ <KeyRelease>a: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>f: StartScroll(Forward)\\n\
++ <KeyRelease>f: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>b: StartScroll(Backward)\\n\
++ <KeyRelease>b: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Right: StartScroll(Forward)\\n\
++ <KeyRelease>Right: NotifyScroll(FullLength) EndScroll()\\n\
++ <KeyPress>Left: StartScroll(Backward)\\n\
++ <KeyRelease>Left: NotifyScroll(FullLength) EndScroll()",
++
"*desktop.baseTranslations:\
- <Key>F8: ShowPopup()\\n\
+ <Key>F8: ShowPopup()\\n\
@@ -472,7 +516,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
<ButtonPress>: SendRFBEvent()\\n\
<ButtonRelease>: SendRFBEvent()\\n\
<Motion>: SendRFBEvent()\\n\
-@@ -58,23 +64,58 @@
+@@ -58,23 +108,58 @@
"*serverDialog.dialog.value.translations: #override\\n\
<Key>Return: ServerDialogDone()",
@@ -536,7 +580,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
"*popup*button1.label: Dismiss popup",
"*popup*button1.translations: #override\\n\
-@@ -84,7 +125,7 @@
+@@ -84,7 +169,7 @@
"*popup*button2.translations: #override\\n\
<Btn1Down>,<Btn1Up>: Quit()",
@@ -545,7 +589,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
"*popup*button3.type: toggle",
"*popup*button3.translations: #override\\n\
<Visible>: SetFullScreenState()\\n\
-@@ -115,6 +156,305 @@
+@@ -115,6 +200,305 @@
"*popup*button8.translations: #override\\n\
<Btn1Down>,<Btn1Up>: SendRFBEvent(key,F8) HidePopup()",
@@ -851,7 +895,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
NULL
};
-@@ -135,6 +475,7 @@
+@@ -135,6 +519,7 @@
*/
AppData appData;
@@ -859,13 +903,16 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
static XtResource appDataResourceList[] = {
{"shareDesktop", "ShareDesktop", XtRBool, sizeof(Bool),
-@@ -155,14 +496,29 @@
+@@ -155,14 +540,32 @@
{"userLogin", "UserLogin", XtRString, sizeof(String),
XtOffsetOf(AppData, userLogin), XtRImmediate, (XtPointer) 0},
+ {"unixPW", "UnixPW", XtRString, sizeof(String),
+ XtOffsetOf(AppData, unixPW), XtRImmediate, (XtPointer) 0},
+
++ {"repeaterUltra", "RepeaterUltra", XtRString, sizeof(String),
++ XtOffsetOf(AppData, repeaterUltra), XtRImmediate, (XtPointer) 0},
++
{"passwordDialog", "PasswordDialog", XtRBool, sizeof(Bool),
XtOffsetOf(AppData, passwordDialog), XtRImmediate, (XtPointer) False},
@@ -891,7 +938,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
{"nColours", "NColours", XtRInt, sizeof(int),
XtOffsetOf(AppData, nColours), XtRImmediate, (XtPointer) 256},
-@@ -179,9 +535,12 @@
+@@ -179,9 +582,12 @@
{"requestedDepth", "RequestedDepth", XtRInt, sizeof(int),
XtOffsetOf(AppData, requestedDepth), XtRImmediate, (XtPointer) 0},
@@ -905,7 +952,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
{"wmDecorationWidth", "WmDecorationWidth", XtRInt, sizeof(int),
XtOffsetOf(AppData, wmDecorationWidth), XtRImmediate, (XtPointer) 4},
-@@ -191,6 +550,9 @@
+@@ -191,6 +597,9 @@
{"popupButtonCount", "PopupButtonCount", XtRInt, sizeof(int),
XtOffsetOf(AppData, popupButtonCount), XtRImmediate, (XtPointer) 0},
@@ -915,7 +962,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
{"debug", "Debug", XtRBool, sizeof(Bool),
XtOffsetOf(AppData, debug), XtRImmediate, (XtPointer) False},
-@@ -206,8 +568,13 @@
+@@ -206,8 +615,13 @@
{"bumpScrollPixels", "BumpScrollPixels", XtRInt, sizeof(int),
XtOffsetOf(AppData, bumpScrollPixels), XtRImmediate, (XtPointer) 20},
@@ -929,7 +976,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
{"qualityLevel", "QualityLevel", XtRInt, sizeof(int),
XtOffsetOf(AppData, qualityLevel), XtRImmediate, (XtPointer) 6},
-@@ -218,14 +585,55 @@
+@@ -218,14 +632,55 @@
{"useRemoteCursor", "UseRemoteCursor", XtRBool, sizeof(Bool),
XtOffsetOf(AppData, useRemoteCursor), XtRImmediate, (XtPointer) True},
@@ -987,11 +1034,12 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
};
-@@ -242,8 +650,22 @@
+@@ -242,8 +697,23 @@
{"-noraiseonbeep", "*raiseOnBeep", XrmoptionNoArg, "False"},
{"-passwd", "*passwordFile", XrmoptionSepArg, 0},
{"-user", "*userLogin", XrmoptionSepArg, 0},
+ {"-unixpw", "*unixPW", XrmoptionSepArg, 0},
++ {"-repeater", "*repeaterUltra", XrmoptionSepArg, 0},
{"-encodings", "*encodings", XrmoptionSepArg, 0},
- {"-bgr233", "*useBGR233", XrmoptionNoArg, "True"},
+ {"-bgr233", "*useBGR233", XrmoptionNoArg, "256"},
@@ -1011,7 +1059,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
{"-owncmap", "*forceOwnCmap", XrmoptionNoArg, "True"},
{"-truecolor", "*forceTrueColour", XrmoptionNoArg, "True"},
{"-truecolour", "*forceTrueColour", XrmoptionNoArg, "True"},
-@@ -253,7 +675,19 @@
+@@ -253,7 +723,19 @@
{"-nojpeg", "*enableJPEG", XrmoptionNoArg, "False"},
{"-nocursorshape", "*useRemoteCursor", XrmoptionNoArg, "False"},
{"-x11cursor", "*useX11Cursor", XrmoptionNoArg, "True"},
@@ -1032,7 +1080,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
};
-@@ -268,15 +702,73 @@
+@@ -268,15 +750,77 @@
{"SendRFBEvent", SendRFBEvent},
{"ShowPopup", ShowPopup},
{"HidePopup", HidePopup},
@@ -1040,6 +1088,10 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
+ {"HideQuality", HideQuality},
+ {"HideCompress", HideCompress},
{"ToggleFullScreen", ToggleFullScreen},
++ {"JumpLeft", JumpLeft},
++ {"JumpRight", JumpRight},
++ {"JumpUp", JumpUp},
++ {"JumpDown", JumpDown},
{"SetFullScreenState", SetFullScreenState},
{"SelectionFromVNC", SelectionFromVNC},
{"SelectionToVNC", SelectionToVNC},
@@ -1106,7 +1158,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
};
-@@ -302,8 +794,8 @@
+@@ -302,8 +846,8 @@
void
usage(void)
{
@@ -1117,7 +1169,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
"\n"
"Usage: %s [<OPTIONS>] [<HOST>][:<DISPLAY#>]\n"
" %s [<OPTIONS>] [<HOST>][::<PORT#>]\n"
-@@ -332,10 +824,148 @@
+@@ -332,10 +876,154 @@
" -autopass\n"
"\n"
"Option names may be abbreviated, e.g. -bgr instead of -bgr233.\n"
@@ -1223,6 +1275,12 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
+ " it is taken as username@password. Otherwise, the program\n"
+ " exits with an error. Got all that?\n"
+ "\n"
++ " -repeater str This is for use with UltraVNC repeater proxy described\n"
++ " here: http://www.uvnc.com/addons/repeater.html. The \"str\"\n"
++ " is the ID string to be sent to the repeater. E.g. ID:1234\n"
++ " In this case host:dpy on the command line is the repeater\n"
++ " server, not the VNC server. The repeater will connect you.\n"
++ "\n"
+ " New Popup actions:\n"
+ "\n"
+ " ViewOnly: ~ -viewonly\n"
@@ -1267,7 +1325,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
/*
-@@ -350,6 +980,7 @@
+@@ -350,6 +1038,7 @@
int i;
char *vncServerName, *colonPos;
int len, portOffset;
@@ -1275,7 +1333,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
/* Turn app resource specs into our appData structure for the rest of the
program to use */
-@@ -357,6 +988,23 @@
+@@ -357,6 +1046,23 @@
XtGetApplicationResources(toplevel, &appData, appDataResourceList,
XtNumber(appDataResourceList), 0, 0);
@@ -1299,7 +1357,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
/* Add our actions to the actions table so they can be used in widget
resource specs */
-@@ -376,6 +1024,10 @@
+@@ -376,6 +1082,10 @@
return;
}
@@ -1310,7 +1368,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/argsresources.c vnc_unixsrc/v
if (argc == 1) {
vncServerName = DoServerDialog();
appData.passwordDialog = True;
-@@ -414,6 +1066,13 @@
+@@ -414,6 +1124,13 @@
if (!len || strspn(colonPos + 1, "0123456789") != len) {
usage();
}
@@ -3492,8 +3550,18 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/dialogs.c vnc_unixsrc/vncview
while (!passwordDialogDone) {
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncviewer/fullscreen.c
--- vnc_unixsrc.orig/vncviewer/fullscreen.c 2003-10-09 05:23:49.000000000 -0400
-+++ vnc_unixsrc/vncviewer/fullscreen.c 2007-02-17 16:32:23.000000000 -0500
-@@ -85,10 +85,14 @@
++++ vnc_unixsrc/vncviewer/fullscreen.c 2008-02-22 09:03:22.000000000 -0500
+@@ -27,7 +27,9 @@
+ #include <X11/Xaw/Toggle.h>
+
+ static Bool DoBumpScroll();
++static Bool DoJumpScroll();
+ static void BumpScrollTimerCallback(XtPointer clientData, XtIntervalId *id);
++static void JumpScrollTimerCallback(XtPointer clientData, XtIntervalId *id);
+ static XtIntervalId timer;
+ static Bool timerSet = False;
+ static Bool scrollLeft, scrollRight, scrollUp, scrollDown;
+@@ -85,10 +87,14 @@
Dimension oldViewportWidth, oldViewportHeight, clipWidth, clipHeight;
Position viewportX, viewportY;
@@ -3508,7 +3576,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
XtVaSetValues(viewport, XtNforceBars, True, NULL);
XtVaGetValues(viewport, XtNwidth, &oldViewportWidth,
XtNheight, &oldViewportHeight, NULL);
-@@ -105,16 +109,23 @@
+@@ -105,16 +111,23 @@
toplevelWidth = dpyWidth;
}
@@ -3534,7 +3602,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
toplevelWidth = dpyWidth;
toplevelHeight = dpyHeight;
}
-@@ -129,7 +140,12 @@
+@@ -129,7 +142,12 @@
reparenting our window to the root. The window manager will get a
ReparentNotify and hopefully clean up its frame window. */
@@ -3547,7 +3615,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
XReparentWindow(dpy, XtWindow(toplevel), DefaultRootWindow(dpy), 0, 0);
-@@ -139,6 +155,8 @@
+@@ -139,6 +157,8 @@
with XReparentWindow. The last XSync seems to prevent losing
focus, but I don't know why. */
XSync(dpy, False);
@@ -3556,7 +3624,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
XMoveWindow(dpy, XtWindow(toplevel), 0, 0);
XSync(dpy, False);
-@@ -164,25 +182,67 @@
+@@ -164,25 +184,67 @@
XtManageChild(viewport);
@@ -3631,7 +3699,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
}
}
-@@ -210,8 +270,14 @@
+@@ -210,8 +272,14 @@
appData.fullScreen = False;
@@ -3648,7 +3716,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
XtUnmapWidget(toplevel);
-@@ -238,6 +304,9 @@
+@@ -238,6 +306,9 @@
XtManageChild(viewport);
XtVaSetValues(toplevel, XtNoverrideRedirect, False, NULL);
@@ -3658,7 +3726,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
if ((toplevelWidth + appData.wmDecorationWidth) >= dpyWidth)
toplevelWidth = dpyWidth - appData.wmDecorationWidth;
-@@ -345,7 +414,9 @@
+@@ -345,7 +416,9 @@
}
if (scrollDown) {
@@ -3669,6 +3737,122 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/fullscreen.c vnc_unixsrc/vncv
desktopY += appData.bumpScrollPixels;
if (desktopY > si.framebufferHeight - dpyHeight)
desktopY = si.framebufferHeight - dpyHeight;
+@@ -375,3 +448,115 @@
+ {
+ DoBumpScroll();
+ }
++
++/* not working: */
++
++Bool
++JumpScroll(int up, int vert) {
++ scrollLeft = scrollRight = scrollUp = scrollDown = False;
++
++
++ if (appData.fullScreen) {
++ return True;
++ }
++ fprintf(stderr, "JumpScroll(%d, %d)\n", up, vert);
++
++ if (vert) {
++ if (up) {
++ scrollUp = True;
++ } else {
++ scrollDown = True;
++ }
++ } else {
++ if (up) {
++ scrollRight = True;
++ } else {
++ scrollLeft = True;
++ }
++ }
++
++ if (scrollLeft || scrollRight || scrollUp || scrollDown) {
++ if (timerSet) {
++ return True;
++ }
++
++ XtVaGetValues(desktop, XtNx, &desktopX, XtNy, &desktopY, NULL);
++ desktopX = -desktopX;
++ desktopY = -desktopY;
++ return DoJumpScroll();
++ }
++
++ if (timerSet) {
++ XtRemoveTimeOut(timer);
++ timerSet = False;
++ }
++
++ return False;
++}
++
++static Bool
++DoJumpScroll() {
++ int oldx = desktopX, oldy = desktopY;
++ int jumpH = si.framebufferWidth / 4;
++ int jumpV = si.framebufferHeight / 4;
++
++ if (scrollRight) {
++ if (desktopX < si.framebufferWidth - dpyWidth) {
++ desktopX += jumpH;
++ if (desktopX > si.framebufferWidth - dpyWidth)
++ desktopX = si.framebufferWidth - dpyWidth;
++ }
++ } else if (scrollLeft) {
++ if (desktopX > 0) {
++ desktopX -= jumpH;
++ if (desktopX < 0)
++ desktopX = 0;
++ }
++ }
++
++ if (scrollDown) {
++ if (appData.yCrop > 0 && desktopY + dpyHeight >= appData.yCrop) {
++ ;
++ } else if (desktopY < si.framebufferHeight - dpyHeight) {
++ desktopY += jumpV;
++ if (desktopY > si.framebufferHeight - dpyHeight)
++ desktopY = si.framebufferHeight - dpyHeight;
++ }
++ } else if (scrollUp) {
++ if (desktopY > 0) {
++ desktopY -= jumpV;
++ if (desktopY < 0)
++ desktopY = 0;
++ }
++ }
++
++ if (oldx != desktopX || oldy != desktopY) {
++ XawViewportSetCoordinates(viewport, desktopX, desktopY);
++ timer = XtAppAddTimeOut(appContext, appData.bumpScrollTime,
++ JumpScrollTimerCallback, NULL);
++ timerSet = True;
++ return True;
++ }
++
++ timerSet = False;
++ return False;
++}
++
++static void
++JumpScrollTimerCallback(XtPointer clientData, XtIntervalId *id) {
++ DoJumpScroll();
++}
++void JumpRight(Widget w, XEvent *ev, String *params, Cardinal *num_params) {
++ JumpScroll(1, 0);
++}
++void JumpLeft(Widget w, XEvent *ev, String *params, Cardinal *num_params) {
++ JumpScroll(0, 0);
++}
++void JumpUp(Widget w, XEvent *ev, String *params, Cardinal *num_params) {
++ JumpScroll(1, 1);
++}
++void JumpDown(Widget w, XEvent *ev, String *params, Cardinal *num_params) {
++ JumpScroll(0, 1);
++}
++
++
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/hextile.c vnc_unixsrc/vncviewer/hextile.c
--- vnc_unixsrc.orig/vncviewer/hextile.c 2007-02-17 22:33:46.000000000 -0500
+++ vnc_unixsrc/vncviewer/hextile.c 2007-02-17 22:48:39.000000000 -0500
@@ -4403,7 +4587,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/popup_ad vnc_unixsrc/vncviewe
+}
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncviewer/rfbproto.c
--- vnc_unixsrc.orig/vncviewer/rfbproto.c 2004-03-11 13:14:39.000000000 -0500
-+++ vnc_unixsrc/vncviewer/rfbproto.c 2008-02-17 10:38:27.000000000 -0500
++++ vnc_unixsrc/vncviewer/rfbproto.c 2008-05-11 11:20:45.000000000 -0400
@@ -57,6 +57,44 @@
static Bool HandleTight16(int rx, int ry, int rw, int rh);
static Bool HandleTight32(int rx, int ry, int rw, int rh);
@@ -4875,14 +5059,14 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ break;
+ }
+ }
-+
+
+- return (int)secType;
+ free(secTypes);
+
+ if (secType == rfbSecTypeInvalid) {
+ fprintf(stderr, "Server did not offer supported security type\n");
+ }
-
-- return (int)secType;
++
+ return (int)secType;
}
@@ -5470,13 +5654,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
{
- rfbFramebufferUpdateRequestMsg fur;
+ rfbFramebufferUpdateRequestMsg fur;
-
-- fur.type = rfbFramebufferUpdateRequest;
-- fur.incremental = incremental ? 1 : 0;
-- fur.x = Swap16IfLE(x);
-- fur.y = Swap16IfLE(y);
-- fur.w = Swap16IfLE(w);
-- fur.h = Swap16IfLE(h);
++
+ if (appData.fileActive) {
+ if (time(NULL) < last_filexfer + 2) {
+// fprintf(stderr, "skip SendFramebufferUpdateRequest: %d - %d\n", last_filexfer, time(NULL));
@@ -5486,8 +5664,12 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ }
+ }
-- if (!WriteExact(rfbsock, (char *)&fur, sz_rfbFramebufferUpdateRequestMsg))
-- return False;
+- fur.type = rfbFramebufferUpdateRequest;
+- fur.incremental = incremental ? 1 : 0;
+- fur.x = Swap16IfLE(x);
+- fur.y = Swap16IfLE(y);
+- fur.w = Swap16IfLE(w);
+- fur.h = Swap16IfLE(h);
+ fur.type = rfbFramebufferUpdateRequest;
+ fur.incremental = incremental ? 1 : 0;
+ fur.x = Swap16IfLE(x);
@@ -5501,11 +5683,13 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ sent_FBU = 2;
+ }
-- return True;
+- if (!WriteExact(rfbsock, (char *)&fur, sz_rfbFramebufferUpdateRequestMsg))
+- return False;
+ if (!WriteExact(rfbsock, (char *)&fur, sz_rfbFramebufferUpdateRequestMsg)) {
+ return False;
+ }
-+
+
+- return True;
+ return True;
}
@@ -5516,13 +5700,6 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
{
- rfbPointerEventMsg pe;
+ rfbPointerEventMsg pe;
-+
-+ if (appData.fileActive) {
-+ if (time(NULL) < last_filexfer + 2) {
-+ //fprintf(stderr, "skip SendPointerEvent: %d - %d\n", last_filexfer, time(NULL));
-+ return True;
-+ }
-+ }
- pe.type = rfbPointerEvent;
- pe.buttonMask = buttonMask;
@@ -5535,6 +5712,13 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
- pe.x = Swap16IfLE(x);
- pe.y = Swap16IfLE(y);
- return WriteExact(rfbsock, (char *)&pe, sz_rfbPointerEventMsg);
++ if (appData.fileActive) {
++ if (time(NULL) < last_filexfer + 2) {
++ //fprintf(stderr, "skip SendPointerEvent: %d - %d\n", last_filexfer, time(NULL));
++ return True;
++ }
++ }
++
+ pe.type = rfbPointerEvent;
+ pe.buttonMask = buttonMask;
+ if (x < 0) x = 0;
@@ -5568,7 +5752,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
}
-@@ -942,281 +1093,675 @@
+@@ -942,281 +1093,716 @@
Bool
SendClientCutText(char *str, int len)
{
@@ -5872,7 +6056,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ if (db) write(2, fxfer, len);
+ if (db) fprintf(stderr, "\n");
+ write(filexfer_sock, fxfer, len);
- }
++ }
+ len = (hdr[4] << 24) | (hdr[5] << 16) | (hdr[6] << 8) | hdr[7];
+ if (hdr[1] == rfbFileHeader && len != rfbRErrorCmd) {
+ if (db) fprintf(stderr, "Got rfbFileTransfer: rfbFileHeader\n");
@@ -5884,7 +6068,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ if (db) write(2, fxfer, len);
+ if (db) fprintf(stderr, "\n");
+ write(filexfer_sock, fxfer, len);
-+ }
+ }
+ if (db) fprintf(stderr, "Got rfbFileTransfer done.\n");
+ skip_XtUpdateAll = 0;
@@ -5909,43 +6093,81 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+Bool
+HandleRFBServerMessage()
+{
-+ int db = 0;
++ static int db = -1;
+ rfbServerToClientMsg msg;
- bytesPerLine = rect.r.w * myFormat.bitsPerPixel / 8;
- linesToRead = BUFFER_SIZE / bytesPerLine;
-+ if (!ReadFromRFBServer((char *)&msg, 1)) {
-+ return False;
++ if (db < 0) {
++ if (getenv("DEBUG_RFB_SMSG")) {
++ db = 1;
++ } else {
++ db = 0;
++ }
+ }
- while (rect.r.h > 0) {
- if (linesToRead > rect.r.h)
- linesToRead = rect.r.h;
-+ if (msg.type == rfbFileTransfer) {
-+ return HandleFileXfer();
++ if (!ReadFromRFBServer((char *)&msg, 1)) {
++ return False;
+ }
- if (!ReadFromRFBServer(buffer,bytesPerLine * linesToRead))
- return False;
-+ switch (msg.type) {
++ if (msg.type == rfbFileTransfer) {
++ return HandleFileXfer();
++ }
- CopyDataToScreen(buffer, rect.r.x, rect.r.y, rect.r.w,
- linesToRead);
++ switch (msg.type) {
+
+- rect.r.h -= linesToRead;
+- rect.r.y += linesToRead;
+ case rfbSetColourMapEntries:
+ {
+ int i;
+ CARD16 rgb[3];
+ XColor xc;
-- rect.r.h -= linesToRead;
-- rect.r.y += linesToRead;
+ if (!ReadFromRFBServer(((char *)&msg) + 1, sz_rfbSetColourMapEntriesMsg - 1)) {
+ return False;
-+ }
+ }
+- break;
+- case rfbEncodingCopyRect:
+- {
+- rfbCopyRect cr;
+-
+- if (!ReadFromRFBServer((char *)&cr, sz_rfbCopyRect))
+- return False;
+-
+- cr.srcX = Swap16IfLE(cr.srcX);
+- cr.srcY = Swap16IfLE(cr.srcY);
+-
+- /* If RichCursor encoding is used, we should extend our
+- "cursor lock area" (previously set to destination
+- rectangle) to the source rectangle as well. */
+- SoftCursorLockArea(cr.srcX, cr.srcY, rect.r.w, rect.r.h);
+-
+- if (appData.copyRectDelay != 0) {
+- XFillRectangle(dpy, desktopWin, srcGC, cr.srcX, cr.srcY,
+- rect.r.w, rect.r.h);
+- XFillRectangle(dpy, desktopWin, dstGC, rect.r.x, rect.r.y,
+- rect.r.w, rect.r.h);
+- XSync(dpy,False);
+- usleep(appData.copyRectDelay * 1000);
+- XFillRectangle(dpy, desktopWin, dstGC, rect.r.x, rect.r.y,
+- rect.r.w, rect.r.h);
+- XFillRectangle(dpy, desktopWin, srcGC, cr.srcX, cr.srcY,
+- rect.r.w, rect.r.h);
+- }
+ msg.scme.firstColour = Swap16IfLE(msg.scme.firstColour);
+ msg.scme.nColours = Swap16IfLE(msg.scme.nColours);
-+
+
+- XCopyArea(dpy, desktopWin, desktopWin, gc, cr.srcX, cr.srcY,
+- rect.r.w, rect.r.h, rect.r.x, rect.r.y);
+ for (i = 0; i < msg.scme.nColours; i++) {
+ if (!ReadFromRFBServer((char *)rgb, 6)) {
+ return False;
@@ -5962,11 +6184,30 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ }
+ xc.flags = DoRed|DoGreen|DoBlue;
+ XStoreColor(dpy, cmap, &xc);
- }
-+
++ }
+
break;
+- }
+ }
-+
+
+- case rfbEncodingRRE:
+- {
+- switch (myFormat.bitsPerPixel) {
+- case 8:
+- if (!HandleRRE8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 16:
+- if (!HandleRRE16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 32:
+- if (!HandleRRE32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- }
+- break;
+- }
+ case rfbFramebufferUpdate:
+ {
+ rfbFramebufferUpdateRectHeader rect;
@@ -5981,43 +6222,84 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ int area_raw = 0;
+ if (db) fprintf(stderr, "FBU-0: %.6f\n", dnow());
-- case rfbEncodingCopyRect:
+- case rfbEncodingCoRRE:
- {
-- rfbCopyRect cr;
--
-- if (!ReadFromRFBServer((char *)&cr, sz_rfbCopyRect))
-- return False;
--
-- cr.srcX = Swap16IfLE(cr.srcX);
-- cr.srcY = Swap16IfLE(cr.srcY);
--
-- /* If RichCursor encoding is used, we should extend our
-- "cursor lock area" (previously set to destination
-- rectangle) to the source rectangle as well. */
-- SoftCursorLockArea(cr.srcX, cr.srcY, rect.r.w, rect.r.h);
--
-- if (appData.copyRectDelay != 0) {
-- XFillRectangle(dpy, desktopWin, srcGC, cr.srcX, cr.srcY,
-- rect.r.w, rect.r.h);
-- XFillRectangle(dpy, desktopWin, dstGC, rect.r.x, rect.r.y,
-- rect.r.w, rect.r.h);
-- XSync(dpy,False);
-- usleep(appData.copyRectDelay * 1000);
-- XFillRectangle(dpy, desktopWin, dstGC, rect.r.x, rect.r.y,
-- rect.r.w, rect.r.h);
-- XFillRectangle(dpy, desktopWin, srcGC, cr.srcX, cr.srcY,
-- rect.r.w, rect.r.h);
+- switch (myFormat.bitsPerPixel) {
+- case 8:
+- if (!HandleCoRRE8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 16:
+- if (!HandleCoRRE16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 32:
+- if (!HandleCoRRE32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- }
+- break;
+- }
+ int skip_incFBU = 0;
+ sent_FBU = -1;
-+
+
+- case rfbEncodingHextile:
+- {
+- switch (myFormat.bitsPerPixel) {
+- case 8:
+- if (!HandleHextile8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 16:
+- if (!HandleHextile16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 32:
+- if (!HandleHextile32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+ if (!ReadFromRFBServer(((char *)&msg.fu) + 1, sz_rfbFramebufferUpdateMsg - 1)) {
+ return False;
}
+- break;
+- }
-- XCopyArea(dpy, desktopWin, desktopWin, gc, cr.srcX, cr.srcY,
-- rect.r.w, rect.r.h, rect.r.x, rect.r.y);
+- case rfbEncodingZlib:
+- {
+- switch (myFormat.bitsPerPixel) {
+- case 8:
+- if (!HandleZlib8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 16:
+- if (!HandleZlib16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 32:
+- if (!HandleZlib32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- }
+- break;
+- }
+ msg.fu.nRects = Swap16IfLE(msg.fu.nRects);
+- case rfbEncodingTight:
+- {
+- switch (myFormat.bitsPerPixel) {
+- case 8:
+- if (!HandleTight8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 16:
+- if (!HandleTight16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- case 32:
+- if (!HandleTight32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
+- return False;
+- break;
+- }
- break;
- }
+ for (i = 0; i < msg.fu.nRects; i++) {
@@ -6300,8 +6582,41 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ unsigned int maxColor=(myFormat.redMax<<myFormat.redShift)|
+ (myFormat.greenMax<<myFormat.greenShift)|
+ (myFormat.blueMax<<myFormat.blueShift);
++ static int ZRLE32 = -1;
++
++ if (ZRLE32 < 0) {
++ /* for debugging or workaround e.g. BE display to LE */
++ if (getenv("ZRLE32")) {
++ if (strstr(getenv("ZRLE32"), "24Up")) {
++ ZRLE32 = 3;
++ } else if (strstr(getenv("ZRLE32"), "24Down")) {
++ ZRLE32 = 2;
++ } else {
++ ZRLE32 = 1;
++ }
++ } else {
++ ZRLE32 = 0;
++ }
++ }
++
+if (db) fprintf(stderr, "maxColor: 0x%x mfbigEnding: %d\n", maxColor, myFormat.bigEndian);
-+ if ((myFormat.bigEndian && (maxColor&0xff)==0) || (!myFormat.bigEndian && (maxColor&0xff000000)==0)) {
++
++ if (ZRLE32 == 1) {
++if (db) fprintf(stderr, "HandleZRLE32\n");
++ if (!HandleZRLE32(rect.r.x,rect.r.y,rect.r.w,rect.r.h)) {
++ return False;
++ }
++ } else if (ZRLE32 == 2) {
++if (db) fprintf(stderr, "HandleZRLE24Down\n");
++ if (!HandleZRLE24Down(rect.r.x,rect.r.y,rect.r.w,rect.r.h)) {
++ return False;
++ }
++ } else if (ZRLE32 == 3) {
++if (db) fprintf(stderr, "HandleZRLE24Up\n");
++ if (!HandleZRLE24Up(rect.r.x,rect.r.y,rect.r.w,rect.r.h)) {
++ return False;
++ }
++ } else if ((myFormat.bigEndian && (maxColor&0xff)==0) || (!myFormat.bigEndian && (maxColor&0xff000000)==0)) {
+if (db) fprintf(stderr, "HandleZRLE24\n");
+ if (!HandleZRLE24(rect.r.x,rect.r.y,rect.r.w,rect.r.h)) {
+ return False;
@@ -6330,105 +6645,27 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ return False;
+ }
-- case rfbEncodingRRE:
-- {
-- switch (myFormat.bitsPerPixel) {
-- case 8:
-- if (!HandleRRE8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 16:
-- if (!HandleRRE16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 32:
-- if (!HandleRRE32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- }
-- break;
+- default:
+- fprintf(stderr,"Unknown rect encoding %d\n",
+- (int)rect.encoding);
+- return False;
- }
+ /* Now we may discard "soft cursor locks". */
+ if (db) fprintf(stderr, "FBU-SUL1 %.6f\n", dnow());
-- case rfbEncodingCoRRE:
-- {
-- switch (myFormat.bitsPerPixel) {
-- case 8:
-- if (!HandleCoRRE8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 16:
-- if (!HandleCoRRE16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 32:
-- if (!HandleCoRRE32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- }
-- break;
-- }
+- /* Now we may discard "soft cursor locks". */
+- SoftCursorUnlockScreen();
+- }
+ SoftCursorUnlockScreen();
-
-- case rfbEncodingHextile:
-- {
-- switch (myFormat.bitsPerPixel) {
-- case 8:
-- if (!HandleHextile8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 16:
-- if (!HandleHextile16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 32:
-- if (!HandleHextile32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
++
+ if (db) fprintf(stderr, "FBU-SUL2 %.6f\n", dnow());
- }
-- break;
-- }
-
-- case rfbEncodingZlib:
-- {
-- switch (myFormat.bitsPerPixel) {
-- case 8:
-- if (!HandleZlib8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 16:
-- if (!HandleZlib16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 32:
-- if (!HandleZlib32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
++ }
++
+ if (1 || area_copyrect) {
+ if (db) fprintf(stderr, "FBU-XSN1 %.6f\n", dnow());
+ XSync(dpy, False);
+ if (db) fprintf(stderr, "FBU-XSN2 %.6f\n", dnow());
- }
-- break;
-- }
--
-- case rfbEncodingTight:
-- {
-- switch (myFormat.bitsPerPixel) {
-- case 8:
-- if (!HandleTight8(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 16:
-- if (!HandleTight16(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
-- case 32:
-- if (!HandleTight32(rect.r.x,rect.r.y,rect.r.w,rect.r.h))
-- return False;
-- break;
++ }
+ sent_FBU = 0;
+ /*
+ * we need to be careful since Xt events are processed
@@ -6457,23 +6694,11 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
+ SendFramebufferUpdateRequest(0, 0, si.framebufferWidth,
+ si.framebufferHeight, False);
+ }
- }
-- break;
-- }
--
-- default:
-- fprintf(stderr,"Unknown rect encoding %d\n",
-- (int)rect.encoding);
-- return False;
-- }
--
-- /* Now we may discard "soft cursor locks". */
-- SoftCursorUnlockScreen();
-- }
++ }
#ifdef MITSHM
/* if using shared memory PutImage, make sure that the X server has
-@@ -1224,59 +1769,149 @@
+@@ -1224,59 +1810,149 @@
mainly to avoid copyrect using invalid screen contents - not sure
if we'd need it otherwise. */
@@ -6504,12 +6729,12 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
{
- Window toplevelWin;
+ Window toplevelWin;
-
-- XBell(dpy, 0);
++
+ if (appData.useBell) {
+ XBell(dpy, 0);
+ }
-+
+
+- XBell(dpy, 0);
+ if (appData.raiseOnBeep) {
+ toplevelWin = XtWindow(toplevel);
+ XMapRaised(dpy, toplevelWin);
@@ -6656,7 +6881,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
}
-@@ -1296,26 +1931,47 @@
+@@ -1296,26 +1972,47 @@
#define CONCAT2(a,b) a##b
#define CONCAT2E(a,b) CONCAT2(a,b)
@@ -6704,7 +6929,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
#undef BPP
/*
-@@ -1358,9 +2014,9 @@
+@@ -1358,9 +2055,9 @@
" %s significant bit in each byte is leftmost on the screen.\n",
(format->bigEndian ? "Most" : "Least"));
} else {
@@ -6716,7 +6941,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/rfbproto.c vnc_unixsrc/vncvie
(format->bigEndian ? "Most" : "Least"));
}
if (format->trueColour) {
-@@ -1462,4 +2118,3 @@
+@@ -1462,4 +2159,3 @@
cinfo->src = &jpegSrcManager;
}
@@ -7263,9 +7488,557 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/tunnel.c vnc_unixsrc/vncviewe
}
sprintf(lastArgv, "localhost::%d", localPort);
+diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer._man vnc_unixsrc/vncviewer/vncviewer._man
+--- vnc_unixsrc.orig/vncviewer/vncviewer._man 1969-12-31 19:00:00.000000000 -0500
++++ vnc_unixsrc/vncviewer/vncviewer._man 2008-02-17 13:52:41.000000000 -0500
+@@ -0,0 +1,544 @@
++'\" t
++.\" ** The above line should force tbl to be a preprocessor **
++.\" Man page for X vncviewer
++.\"
++.\" Copyright (C) 1998 [email protected]
++.\" Copyright (C) 2000,2001 Red Hat, Inc.
++.\" Copyright (C) 2001-2003 Constantin Kaplinsky <[email protected]>
++.\"
++.\" You may distribute under the terms of the GNU General Public
++.\" License as specified in the file LICENCE.TXT that comes with the
++.\" TightVNC distribution.
++.\"
++.TH vncviewer 1 "January 2003" "" "TightVNC"
++.SH NAME
++vncviewer \- an X viewer client for VNC
++.SH SYNOPSIS
++.B vncviewer
++.RI [\| options \|]
++.RI [\| host \|][\| :display \|]
++.br
++.B vncviewer
++.RI [\| options \|]
++.RI [\| host \|][\| ::port \|]
++.br
++.B vncviewer
++.RI [\| options \|]
++.IR \-listen
++.RI [\| display \|]
++.br
++.B vncviewer
++.IR \-help
++.br
++.SH DESCRIPTION
++.B vncviewer
++is an Xt\-based client application for the VNC (Virtual Network
++Computing) system. It can connect to any VNC\-compatible server such
++as \fBXvnc\fR or WinVNC, allowing you to control desktop environment
++of a different machine.
++
++You can use F8 to display a pop\-up utility menu. Press F8 twice to
++pass single F8 to the remote side.
++.SH OPTIONS
++.TP
++\fB\-help\fR
++Prints a short usage notice to stderr.
++.TP
++\fB\-listen\fR
++Make the viewer listen on port 5500+\fIdisplay\fR for reverse
++connections from a server. WinVNC supports reverse connections using
++the "Add New Client" menu option, or the \-connect command line
++option. \fBXvnc\fR requires the use of the helper program
++\fBvncconnect\fR.
++.TP
++\fB\-via\fR \fIgateway\fR
++Automatically create encrypted TCP tunnel to the \fIgateway\fR machine
++before connection, connect to the \fIhost\fR through that tunnel
++(TightVNC\-specific). By default, this option invokes SSH local port
++forwarding, assuming that SSH client binary can be accessed as
++/usr/bin/ssh. Note that when using the \fB\-via\fR option, the host
++machine name should be specified as known to the gateway machine, e.g.
++"localhost" denotes the \fIgateway\fR, not the machine where vncviewer
++was launched. See the ENVIRONMENT section below for the information on
++configuring the \fB\-via\fR option.
++.TP
++\fB\-shared\fR
++When connecting, specify that a shared connection is requested. In
++TightVNC, this is the default mode, allowing you to share the desktop
++with other clients already using it.
++.TP
++\fB\-noshared\fR
++When connecting, specify that the session may not be shared. This
++would either disconnect other connected clients or refuse your
++connection, depending on the server configuration.
++.TP
++\fB\-viewonly\fR
++Disable transfer of mouse and keyboard events from the client to the
++server.
++.TP
++\fB\-fullscreen\fR
++Start in full\-screen mode. Please be aware that operating in
++full\-screen mode may confuse X window managers. Typically, such
++conflicts cause incorrect handling of input focus or make the viewer
++window disappear mysteriously. See the grabKeyboard setting in the
++RESOURCES section below for a method to solve input focus problem.
++.TP
++\fB\-noraiseonbeep\fR
++By default, the viewer shows and raises its window on remote beep
++(bell) event. This option disables such behaviour
++(TightVNC\-specific).
++.TP
++\fB\-user\fR \fIusername\fR
++User name for Unix login authentication. Default is to use current
++Unix user name. If this option was given, the viewer will prefer Unix
++login authentication over the standard VNC authentication.
++.TP
++\fB\-passwd\fR \fIpasswd\-file\fR
++File from which to get the password (as generated by the
++\fBvncpasswd\fR(1) program). This option affects only the standard VNC
++authentication.
++.TP
++\fB\-encodings\fR \fIencoding\-list\fR
++TightVNC supports several different compression methods to encode
++screen updates; this option specifies a set of them to use in order of
++preference. Encodings are specified separated with spaces, and must
++thus be enclosed in quotes if more than one is specified. Available
++encodings, in default order for a remote connection, are "copyrect
++tight hextile zlib corre rre raw". For a local connection (to the same
++machine), the default order to try is "raw copyrect tight hextile zlib
++corre rre". Raw encoding is always assumed as a last option if no
++other encoding can be used for some reason. For more information on
++encodings, see the section ENCODINGS below.
++.TP
++\fB\-bgr233\fR
++Always use the BGR233 format to encode pixel data. This reduces
++network traffic, but colors may be represented inaccurately. The
++bgr233 format is an 8\-bit "true color" format, with 2 bits blue, 3
++bits green, and 3 bits red.
++.TP
++\fB\-owncmap\fR
++Try to use a PseudoColor visual and a private colormap. This allows
++the VNC server to control the colormap.
++.TP
++\fB\-truecolour\fR, \fB\-truecolor\fR
++Try to use a TrueColor visual.
++.TP
++\fB\-depth\fR \fIdepth\fR
++On an X server which supports multiple TrueColor visuals of different
++depths, attempt to use the specified one (in bits per pixel); if
++successful, this depth will be requested from the VNC server.
++.TP
++\fB\-compresslevel \fIlevel\fR
++Use specified compression \fIlevel\fR (0..9) for "tight" and "zlib"
++encodings (TightVNC\-specific). Level 1 uses minimum of CPU time and
++achieves weak compression ratios, while level 9 offers best
++compression but is slow in terms of CPU time consumption on the server
++side. Use high levels with very slow network connections, and low
++levels when working over high\-speed LANs. It's not recommended to use
++compression level 0, reasonable choices start from the level 1.
++.TP
++\fB\-quality \fIlevel\fR
++Use the specified JPEG quality \fIlevel\fR (0..9) for the "tight"
++encoding (TightVNC\-specific). Quality level 0 denotes bad image
++quality but very impressive compression ratios, while level 9 offers
++very good image quality at lower compression ratios. Note that the
++"tight" encoder uses JPEG to encode only those screen areas that look
++suitable for lossy compression, so quality level 0 does not always
++mean unacceptable image quality.
++.TP
++\fB\-nojpeg\fR
++Disable lossy JPEG compression in Tight encoding (TightVNC\-specific).
++Disabling JPEG compression is not a good idea in typical cases, as
++that makes the Tight encoder less efficient. You might want to use
++this option if it's absolutely necessary to achieve perfect image
++quality (see also the \fB\-quality\fR option).
++.TP
++\fB\-nocursorshape\fR
++Disable cursor shape updates, protocol extensions used to handle
++remote cursor movements locally on the client side
++(TightVNC\-specific). Using cursor shape updates decreases delays with
++remote cursor movements, and can improve bandwidth usage dramatically.
++.TP
++\fB\-x11cursor\fR
++Use a real X11 cursor with X-style cursor shape updates, instead of
++drawing the remote cursor on the framebuffer. This option also
++disables the dot cursor, and disables cursor position updates in
++non-fullscreen mode.
++.TP
++\fB\-autopass\fR
++Read a plain-text password from stdin. This option affects only the
++standard VNC authentication.
++
++.SH Enhanced TightVNC Viewer (SSVNC) OPTIONS
++.TP
++Enhanced TightVNC Viewer (SSVNC) web page is located at:
++.TP
++http://www.karlrunge.com/x11vnc/ssvnc.html
++.TP
++Note: ZRLE and ZYWRLE encodings are now supported.
++.TP
++Note: F9 is shortcut to Toggle FullScreen mode.
++.TP
++\fB\-use64\fR
++In \fB\-bgr233\fR mode, use 64 colors instead of 256.
++.TP
++\fB\-bgr222\fR
++Same as \fB\-use64\fR.
++.TP
++\fB\-use8\fR
++In \fB\-bgr233\fR mode, use 8 colors instead of 256.
++.TP
++\fB\-bgr111\fR
++Same as \fB\-use8\fR.
++.TP
++\fB\-16bpp\fR
++If the vnc viewer X display is depth 24 at 32bpp
++request a 16bpp format from the VNC server to cut
++network traffic by up to 2X, then tranlate the
++pixels to 32bpp locally.
++.TP
++\fB\-bgr565\fR
++Same as \fB\-16bpp\fR.
++.TP
++\fB\-grey\fR
++Use a grey scale for the 16- and 8\fB\-bpp\fR modes.
++.TP
++\fB\-alpha\fR
++Use alphablending transparency for local cursors
++requires: x11vnc server, both client and server
++must be 32bpp and same endianness.
++.TP
++\fB\-ycrop\fR n
++Only show the top n rows of the framebuffer. For
++use with x11vnc \fB\-ncache\fR client caching option
++to help "hide" the pixel cache region.
++Use a negative value (e.g. \fB\-1\fR) for autodetection.
++Autodetection will always take place if the remote
++fb height is more than 2 times the width.
++.TP
++\fB\-sbwidth\fR n
++Scrollbar width for x11vnc \fB\-ncache\fR mode (\fB\-ycrop\fR),
++default is very narrow: 2 pixels, it is narrow to
++avoid distraction in \fB\-ycrop\fR mode.
++.TP
++\fB\-nobell\fR
++Disable bell.
++.TP
++\fB\-rawlocal\fR
++Prefer raw encoding for localhost, default is
++no, i.e. assumes you have a SSH tunnel instead.
++.TP
++\fB\-graball\fR
++Grab the entire X server when in fullscreen mode,
++needed by some old window managers like fvwm2.
++.TP
++\fB\-popupfix\fR
++Warp the popup back to the pointer position,
++needed by some old window managers like fvwm2.
++.TP
++\fB\-grabkbd\fR
++Grab the X keyboard when in fullscreen mode,
++needed by some window managers. Same as \fB\-grabkeyboard\fR.
++\fB\-grabkbd\fR is the default, use \fB\-nograbkbd\fR to disable.
++.TP
++\fB\-bs\fR, \fB\-nobs\fR
++Whether or not to use X server Backingstore for the
++main viewer window. The default is to not, mainly
++because most Linux, etc, systems X servers disable
++*all* Backingstore by default. To re\fB\-enable\fR it put
++Option "Backingstore"
++in the Device section of /etc/X11/xorg.conf.
++In \fB\-bs\fR mode with no X server backingstore, whenever an
++area of the screen is re\fB\-exposed\fR it must go out to the
++VNC server to retrieve the pixels. This is too slow.
++In \fB\-nobs\fR mode, memory is allocated by the viewer to
++provide its own backing of the main viewer window. This
++actually makes some activities faster (changes in large
++regions) but can appear to "flash" too much.
++.TP
++\fB\-noshm\fR
++Disable use of MIT shared memory extension (not recommended)
++.TP
++\fB\-termchat\fR
++Do the UltraVNC chat in the terminal vncviewer is in
++instead of in an independent window.
++.TP
++\fB\-unixpw\fR
++str Useful for logging into x11vnc in \fB\-unixpw\fR mode. "str" is a
++string that allows many ways to enter the Unix Username
++and Unix Password. These characters: username, newline,
++password, newline are sent to the VNC server after any VNC
++authentication has taken place. Under x11vnc they are
++used for the \fB\-unixpw\fR login. Other VNC servers could do
++something similar.
++You can also indicate "str" via the environment
++variable SSVNC_UNIXPW.
++Note that the Escape key is actually sent first to tell
++x11vnc to not echo the Unix Username back to the VNC
++viewer. Set SSVNC_UNIXPW_NOESC=1 to override this.
++If str is ".", then you are prompted at the command line
++for the username and password in the normal way. If str is
++"-" the stdin is read via getpass(3) for username@password.
++Otherwise if str is a file, it is opened and the first line
++read is taken as the Unix username and the 2nd as the
++password. If str prefixed by "rm:" the file is removed
++after reading. Otherwise, if str has a "@" character,
++it is taken as username@password. Otherwise, the program
++exits with an error. Got all that?
++.TP
++\fB New Popup actions:\fR
++
++ ViewOnly: ~ -viewonly
++ Disable Bell: ~ -nobell
++ Cursor Shape: ~ -nocursorshape
++ X11 Cursor: ~ -x11cursor
++ Cursor Alphablend: ~ -alpha
++ Toggle Tight/ZRLE: ~ -encodings ...
++ Toggle ZRLE/ZYWRLE: ~ -encodings zywrle...
++ Quality Level ~ -quality (both Tight and ZYWRLE)
++ Compress Level ~ -compresslevel
++ Disable JPEG: ~ -nojpeg (Tight)
++ Full Color as many colors as local screen allows.
++ Grey scale (16 & 8-bpp) ~ -grey, for low colors 16/8bpp modes only.
++ 16 bit color (BGR565) ~ -16bpp / -bgr565
++ 8 bit color (BGR233) ~ -bgr233
++ 256 colors ~ -bgr233 default # of colors.
++ 64 colors ~ -bgr222 / -use64
++ 8 colors ~ -bgr111 / -use8
++ Set Y Crop (y-max) ~ -ycrop
++ Set Scrollbar Width ~ -sbwidth
++
++ UltraVNC Extensions:
++
++ Set 1/n Server Scale Ultravnc ext. Scale desktop by 1/n.
++ Text Chat Ultravnc ext. Do Text Chat.
++ File Transfer Ultravnc ext. File xfer via Java helper.
++ Single Window Ultravnc ext. Grab and view a single window.
++ (select then click on the window you want).
++ Disable Remote Input Ultravnc ext. Try to prevent input and
++ viewing of monitor at physical display.
++
++ Note: the Ultravnc extensions only apply to servers that support
++ them. x11vnc/libvncserver supports some of them.
++
++.SH ENCODINGS
++The server supplies information in whatever format is desired by the
++client, in order to make the client as easy as possible to implement.
++If the client represents itself as able to use multiple formats, the
++server will choose one.
++
++.I Pixel format
++refers to the representation of an individual pixel. The most common
++formats are 24 and 16 bit "true\-color" values, and 8\-bit "color map"
++representations, where an arbitrary map converts the color number to
++RGB values.
++
++.I Encoding
++refers to how a rectangle of pixels are sent (all pixel information in
++VNC is sent as rectangles). All rectangles come with a header giving
++the location and size of the rectangle and an encoding type used by
++the data which follows. These types are listed below.
++.TP
++.B Raw
++The raw encoding simply sends width*height pixel values. All clients
++are required to support this encoding type. Raw is also the fastest
++when the server and viewer are on the same machine, as the connection
++speed is essentially infinite and raw encoding minimizes processing
++time.
++.TP
++.B CopyRect
++The Copy Rectangle encoding is efficient when something is being
++moved; the only data sent is the location of a rectangle from which
++data should be copied to the current location. Copyrect could also be
++used to efficiently transmit a repeated pattern.
++.TP
++.B RRE
++The Rise\-and\-Run\-length\-Encoding is basically a 2D version of
++run\-length encoding (RLE). In this encoding, a sequence of identical
++pixels are compressed to a single value and repeat count. In VNC, this
++is implemented with a background color, and then specifications of an
++arbitrary number of subrectangles and color for each. This is an
++efficient encoding for large blocks of constant color.
++.TP
++.B CoRRE
++This is a minor variation on RRE, using a maximum of 255x255 pixel
++rectangles. This allows for single\-byte values to be used, reducing
++packet size. This is in general more efficient, because the savings
++from sending 1\-byte values generally outweighs the losses from the
++(relatively rare) cases where very large regions are painted the same
++color.
++.TP
++.B Hextile
++Here, rectangles are split up in to 16x16 tiles, which are sent in a
++predetermined order. The data within the tiles is sent either raw or
++as a variant on RRE. Hextile encoding is usually the best choice for
++using in high\-speed network environments (e.g. Ethernet local\-area
++networks).
++.TP
++.B Zlib
++Zlib is a very simple encoding that uses zlib library to compress raw
++pixel data. This encoding achieves good compression, but consumes a
++lot of CPU time. Support for this encoding is provided for
++compatibility with VNC servers that might not understand Tight
++encoding which is more efficient than Zlib in nearly all real\-life
++situations.
++.TP
++.B Tight
++Like Zlib encoding, Tight encoding uses zlib library to compress the
++pixel data, but it pre\-processes data to maximize compression ratios,
++and to minimize CPU usage on compression. Also, JPEG compression may
++be used to encode color\-rich screen areas (see the description of
++\-quality and \-nojpeg options above). Tight encoding is usually the
++best choice for low\-bandwidth network environments (e.g. slow modem
++connections).
++.TP
++.B ZRLE
++The SSVNC viewer has ported the RealVNC (www.realvnc.com) ZRLE encoding
++to the unix tightvnc viewer.
++.TP
++.B ZYWRLE
++The SSVNC viewer has ported the Hitachi lossy wavelet based ZRLE
++encoding from http://mobile.hitachi-system.co.jp/publications/ZYWRLE/
++to the unix tightvnc viewer.
++.SH RESOURCES
++X resources that \fBvncviewer\fR knows about, aside from the
++normal Xt resources, are as follows:
++.TP
++.B shareDesktop
++Equivalent of \fB\-shared\fR/\fB\-noshared\fR options. Default true.
++.TP
++.B viewOnly
++Equivalent of \fB\-viewonly\fR option. Default false.
++.TP
++.B fullScreen
++Equivalent of \fB\-fullscreen\fR option. Default false.
++.TP
++.B grabKeyboard
++Grab keyboard in full-screen mode. This can help to solve problems
++with losing keyboard focus. Default false.
++.TP
++.B raiseOnBeep
++Equivalent of \fB\-noraiseonbeep\fR option, when set to false. Default
++true.
++.TP
++.B passwordFile
++Equivalent of \fB\-passwd\fR option.
++.TP
++.B userLogin
++Equivalent of \fB\-user\fR option.
++.TP
++.B passwordDialog
++Whether to use a dialog box to get the password (true) or get it from
++the tty (false). Irrelevant if \fBpasswordFile\fR is set. Default
++false.
++.TP
++.B encodings
++Equivalent of \fB\-encodings\fR option.
++.TP
++.B compressLevel
++Equivalent of \fB\-compresslevel\fR option (TightVNC\-specific).
++.TP
++.B qualityLevel
++Equivalent of \fB\-quality\fR option (TightVNC\-specific).
++.TP
++.B enableJPEG
++Equivalent of \fB\-nojpeg\fR option, when set to false. Default true.
++.TP
++.B useRemoteCursor
++Equivalent of \fB\-nocursorshape\fR option, when set to false
++(TightVNC\-specific). Default true.
++.TP
++.B useBGR233
++Equivalent of \fB\-bgr233\fR option. Default false.
++.TP
++.B nColours
++When using BGR233, try to allocate this many "exact" colors from the
++BGR233 color cube. When using a shared colormap, setting this resource
++lower leaves more colors for other X clients. Irrelevant when using
++truecolor. Default is 256 (i.e. all of them).
++.TP
++.B useSharedColours
++If the number of "exact" BGR233 colors successfully allocated is less
++than 256 then the rest are filled in using the "nearest" colors
++available. This resource says whether to only use the "exact" BGR233
++colors for this purpose, or whether to use other clients' "shared"
++colors as well. Default true (i.e. use other clients' colors).
++.TP
++.B forceOwnCmap
++Equivalent of \fB\-owncmap\fR option. Default false.
++.TP
++.B forceTrueColour
++Equivalent of \fB\-truecolour\fR option. Default false.
++.TP
++.B requestedDepth
++Equivalent of \fB\-depth\fR option.
++.TP
++.B useSharedMemory
++Use MIT shared memory extension if on the same machine as the X
++server. Default true.
++.TP
++.B wmDecorationWidth, wmDecorationHeight
++The total width and height taken up by window manager decorations.
++This is used to calculate the maximum size of the VNC viewer window.
++Default is width 4, height 24.
++.TP
++.B bumpScrollTime, bumpScrollPixels
++When in full screen mode and the VNC desktop is bigger than the X
++display, scrolling happens whenever the mouse hits the edge of the
++screen. The maximum speed of scrolling is bumpScrollPixels pixels
++every bumpScrollTime milliseconds. The actual speed of scrolling will
++be slower than this, of course, depending on how fast your machine is.
++Default 20 pixels every 25 milliseconds.
++.TP
++.B popupButtonCount
++The number of buttons in the popup window. See the README file for
++more information on how to customize the buttons.
++.TP
++.B debug
++For debugging. Default false.
++.TP
++.B rawDelay, copyRectDelay
++For debugging, see the README file for details. Default 0 (off).
++.SH ENVIRONMENT
++When started with the \fB\-via\fR option, vncviewer reads the
++\fBVNC_VIA_CMD\fR environment variable, expands patterns beginning
++with the "%" character, and executes result as a command assuming that
++it would create TCP tunnel that should be used for VNC connection. If
++not set, this environment variable defaults to "/usr/bin/ssh -f -L
++%L:%H:%R %G sleep 20".
++
++The following patterns are recognized in the \fBVNC_VIA_CMD\fR (note
++that all the patterns %G, %H, %L and %R must be present in the command
++template):
++.TP
++.B %%
++A literal "%";
++.TP
++.B %G
++gateway host name;
++.TP
++.B %H
++remote VNC host name, as known to the gateway;
++.TP
++.B %L
++local TCP port number;
++.TP
++.B %R
++remote TCP port number.
++.SH SEE ALSO
++\fBvncserver\fR(1), \fBXvnc\fR(1), \fBvncpasswd\fR(1),
++\fBvncconnect\fR(1), \fBssh\fR(1)
++.SH AUTHORS
++Original VNC was developed in AT&T Laboratories Cambridge. TightVNC
++additions was implemented by Constantin Kaplinsky. Many other people
++participated in development, testing and support.
++
++\fBMan page authors:\fR
++.br
++Marcus Brinkmann <[email protected]>,
++.br
++Terran Melconian <[email protected]>,
++.br
++Tim Waugh <[email protected]>,
++.br
++Constantin Kaplinsky <[email protected]>
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.c vnc_unixsrc/vncviewer/vncviewer.c
--- vnc_unixsrc.orig/vncviewer/vncviewer.c 2004-01-13 09:22:05.000000000 -0500
-+++ vnc_unixsrc/vncviewer/vncviewer.c 2008-02-17 13:27:17.000000000 -0500
++++ vnc_unixsrc/vncviewer/vncviewer.c 2008-04-28 21:20:06.000000000 -0400
@@ -22,6 +22,7 @@
*/
@@ -7445,7 +8218,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.c vnc_unixsrc/vncvi
/* The -listen option is used to make us a daemon process which listens for
incoming connections from servers, rather than actively connecting to a
-@@ -45,89 +203,1154 @@
+@@ -45,89 +203,1172 @@
listenForIncomingConnections() returns, setting the listenSpecified
flag. */
@@ -7540,6 +8313,24 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.c vnc_unixsrc/vncvi
+ if (!ConnectToRFBServer(vncServerHost, vncServerPort)) {
+ exit(1);
+ }
++ if (appData.repeaterUltra != NULL) {
++ char tmp[256];
++ if (ReadFromRFBServer(tmp, 12)) {
++ if (strstr(tmp, "RFB 000.000") == tmp) {
++ int i;
++ for (i=0; i<256; i++) {
++ tmp[i] = '\0';
++ }
++ for (i=0; i<250; i++) {
++ if (i >= strlen(appData.repeaterUltra)) {
++ break;
++ }
++ tmp[i] = appData.repeaterUltra[i];
++ }
++ WriteExact(rfbsock, tmp,250);
++ }
++ }
++ }
+ }
/* Initialise the VNC connection, including reading the password */
@@ -8638,7 +9429,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.c vnc_unixsrc/vncvi
}
diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncviewer/vncviewer.h
--- vnc_unixsrc.orig/vncviewer/vncviewer.h 2004-03-11 13:14:40.000000000 -0500
-+++ vnc_unixsrc/vncviewer/vncviewer.h 2008-02-17 12:36:58.000000000 -0500
++++ vnc_unixsrc/vncviewer/vncviewer.h 2008-04-28 21:08:16.000000000 -0400
@@ -51,7 +51,7 @@
(((l) & 0x0000ff00) << 8) | \
(((l) & 0x000000ff) << 24)) : (l))
@@ -8648,7 +9439,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
#define FLASH_PORT_OFFSET 5400
#define LISTEN_PORT_OFFSET 5500
-@@ -68,51 +68,74 @@
+@@ -68,51 +68,75 @@
/* argsresources.c */
typedef struct {
@@ -8723,6 +9514,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
+
+ char *userLogin;
+ char *unixPW;
++ char *repeaterUltra;
+
+ char *passwordFile;
+ Bool passwordDialog;
@@ -8764,7 +9556,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
extern char *fallback_resources[];
extern char vncServerHost[];
-@@ -130,10 +153,11 @@
+@@ -130,10 +154,11 @@
/* colour.c */
extern unsigned long BGR233ToPixel[];
@@ -8777,7 +9569,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
extern void SetVisualAndCmap();
-@@ -157,13 +181,40 @@
+@@ -157,13 +182,40 @@
extern void DesktopInitBeforeRealization();
extern void DesktopInitAfterRealization();
@@ -8818,7 +9610,19 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
extern void ServerDialogDone(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern char *DoServerDialog();
-@@ -207,6 +258,18 @@
+@@ -181,6 +233,11 @@
+ extern void FullScreenOn();
+ extern void FullScreenOff();
+
++extern void JumpLeft(Widget w, XEvent *event, String *params, Cardinal *num_params);
++extern void JumpRight(Widget w, XEvent *event, String *params, Cardinal *num_params);
++extern void JumpUp(Widget w, XEvent *event, String *params, Cardinal *num_params);
++extern void JumpDown(Widget w, XEvent *event, String *params, Cardinal *num_params);
++
+ /* listen.c */
+
+ extern void listenForIncomingConnections();
+@@ -207,6 +264,18 @@
Cardinal *num_params);
extern void CreatePopup();
@@ -8837,7 +9641,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
/* rfbproto.c */
extern int rfbsock;
-@@ -229,6 +292,15 @@
+@@ -229,6 +298,15 @@
extern Bool SendClientCutText(char *str, int len);
extern Bool HandleRFBServerMessage();
@@ -8853,7 +9657,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
extern void PrintPixelFormat(rfbPixelFormat *format);
/* selection.c */
-@@ -241,8 +313,9 @@
+@@ -241,8 +319,9 @@
/* shm.c */
@@ -8864,7 +9668,7 @@ diff -Naur -X ./exclude vnc_unixsrc.orig/vncviewer/vncviewer.h vnc_unixsrc/vncvi
/* sockets.c */
-@@ -271,3 +344,63 @@
+@@ -271,3 +350,63 @@
extern XtAppContext appContext;
extern Display* dpy;
extern Widget toplevel;