From b9c453b224fee90d2867022bfa7bcc2bc1386a31 Mon Sep 17 00:00:00 2001 From: Adam Tkac Date: Jan 17 2011 11:11:40 +0000 Subject: Update to r4237. - patches merged - tigervnc11-optionsdialog.patch - tigervnc11-rh607866.patch Signed-off-by: Adam Tkac --- diff --git a/.gitignore b/.gitignore index d828d0a..1b1d742 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ tigervnc-1.0.90-20100721svn4113.tar.bz2 /tigervnc-1.0.90-20100813svn4123.tar.bz2 /tigervnc-1.0.90-20101208svn4225.tar.bz2 +/tigervnc-1.0.90-20110117svn4237.tar.bz2 diff --git a/sources b/sources index ea6ea25..e84b49b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -e30858eb41d040696b95901b3de45349 tigervnc-1.0.90-20101208svn4225.tar.bz2 +435627c00fc0cd7c6cf3596a3b139e27 tigervnc-1.0.90-20110117svn4237.tar.bz2 diff --git a/tigervnc.spec b/tigervnc.spec index d999b1b..5455705 100644 --- a/tigervnc.spec +++ b/tigervnc.spec @@ -1,8 +1,8 @@ -%define snap 20101208svn4225 +%define snap 20110117svn4237 Name: tigervnc Version: 1.0.90 -Release: 0.29.%{snap}%{?dist} +Release: 0.30.%{snap}%{?dist} Summary: A TigerVNC remote display system Group: User Interface/Desktops @@ -43,8 +43,6 @@ Patch0: tigervnc-102434.patch Patch4: tigervnc-cookie.patch Patch8: tigervnc-viewer-reparent.patch Patch10: tigervnc11-ldnow.patch -Patch11: tigervnc11-optionsdialog.patch -Patch12: tigervnc11-rh607866.patch %description Virtual Network Computing (VNC) is a remote display system which @@ -130,10 +128,6 @@ This package contains license of the TigerVNC suite %patch4 -p1 -b .cookie %patch8 -p1 -b .viewer-reparent %patch10 -p1 -b .ldnow -pushd unix/vncviewer -%patch11 -p0 -b .optionsdialog -popd -%patch12 -p1 -b .rh607866 cp -r /usr/share/xorg-x11-server-source/* unix/xserver pushd unix/xserver @@ -303,6 +297,12 @@ fi %doc LICENCE.TXT %changelog +* Mon Jan 17 2011 Adam Tkac 1.0.90-0.30.20110117svn4237 +- update to r4237 +- patches merged + - tigervnc11-optionsdialog.patch + - tigervnc11-rh607866.patch + * Fri Jan 14 2011 Adam Tkac 1.0.90-0.29.20101208svn4225 - improve patch for keyboard issues diff --git a/tigervnc11-optionsdialog.patch b/tigervnc11-optionsdialog.patch deleted file mode 100644 index ccfb298..0000000 --- a/tigervnc11-optionsdialog.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: OptionsDialog.h -=================================================================== ---- OptionsDialog.h (revision 4225) -+++ OptionsDialog.h (revision 4232) -@@ -198,6 +198,8 @@ - y += secVnc.height(); - secPlain.move(xPad, y); - y += secPlain.height(); -+ -+ xPad -= SECOND_COL_XPAD; - #endif - - /* Render "OK" and "Cancel" buttons */ diff --git a/tigervnc11-rh607866.patch b/tigervnc11-rh607866.patch deleted file mode 100644 index 028c737..0000000 --- a/tigervnc11-rh607866.patch +++ /dev/null @@ -1,156 +0,0 @@ -diff -up tigervnc-1.0.90-20101208svn4225/unix/xserver/hw/vnc/Input.cc.rh607866 tigervnc-1.0.90-20101208svn4225/unix/xserver/hw/vnc/Input.cc ---- tigervnc-1.0.90-20101208svn4225/unix/xserver/hw/vnc/Input.cc.rh607866 2010-12-08 17:31:39.000000000 +0100 -+++ tigervnc-1.0.90-20101208svn4225/unix/xserver/hw/vnc/Input.cc 2011-01-14 14:28:20.920142574 +0100 -@@ -520,6 +520,49 @@ static struct altKeysym_t { - #define FREE_MAPS - #endif - -+#if XORG >= 17 -+/* -+ * Modifier keysyms must be handled differently. Instead of finding -+ * the right row and collumn in the keymap, directly press/release -+ * the keycode which is mapped as modifier with the same keysym. -+ * -+ * This will avoid issues when there are multiple modifier keysyms -+ * in the keymap but only some of them are mapped as modifiers in -+ * the modmap. -+ * -+ * Returns keycode of the modifier key. -+ */ -+ -+static inline int isModifier(KeySymsPtr keymap, KeyCode *modmap, -+ int maxKeysPerMod, rdr::U32 keysym) -+{ -+ KeySym *map = keymap->map; -+ KeyCode minKeyCode = keymap->minKeyCode; -+ int mapWidth = keymap->mapWidth; -+ int i, j, k; -+ -+ /* Find modifier index in the modmap */ -+ for (i = 0; i < 8; i++) { -+ for (k = 0; k < maxKeysPerMod; k++) { -+ int index = i * maxKeysPerMod + k; -+ int keycode = modmap[index]; -+ -+ if (keycode == 0) -+ continue; -+ -+ for (j = 0; j < mapWidth; j++) { -+ if (map[(keycode - minKeyCode) * mapWidth + j] -+ == keysym) { -+ return keycode; -+ } -+ } -+ } -+ } -+ -+ return -1; /* Not a modifier */ -+} -+#endif -+ - void InputDevice::keyEvent(rdr::U32 keysym, bool down) - { - #if XORG < 17 -@@ -533,6 +576,9 @@ void InputDevice::keyEvent(rdr::U32 keys - int mapWidth; - unsigned int i; - int j, k, state, maxKeysPerMod; -+#if XORG >= 18 -+ KeybdCtrl ctrl; -+#endif - - initInputDevice(); - -@@ -582,6 +628,18 @@ void InputDevice::keyEvent(rdr::U32 keys - maxKeyCode = keymap->maxKeyCode; - mapWidth = keymap->mapWidth; - -+#if XORG >= 18 -+ /* -+ * No server-side key repeating, please. Some clients won't work well, -+ * check https://bugzilla.redhat.com/show_bug.cgi?id=607866. -+ */ -+ ctrl = keyboardDev->kbdfeed->ctrl; -+ if (ctrl.autoRepeat != FALSE) { -+ ctrl.autoRepeat = FALSE; -+ XkbSetRepeatKeys(keyboardDev, -1, ctrl.autoRepeat); -+ } -+#endif -+ - /* find which modifier Mode_switch is on. */ - int modeSwitchMapIndex = 0; - for (i = 3; i < 8; i++) { -@@ -603,7 +661,26 @@ void InputDevice::keyEvent(rdr::U32 keys - } - ModeSwitchFound: - -+ int kc; - int col = 0; -+ -+#if XORG >= 17 -+ if ((kc = isModifier(keymap, modmap, maxKeysPerMod, keysym)) != -1) { -+ /* -+ * It is a modifier key event. -+ * -+ * Don't do any auto-repeat because the X server will translate -+ * each press into a release followed by a press. -+ */ -+ if (IS_PRESSED(keyc, kc) && down) { -+ FREE_MAPS; -+ return; -+ } -+ -+ goto press; -+ } -+#endif -+ - if (maxKeysPerMod != 0) { - if ((state & (1 << ShiftMapIndex)) != 0) - col |= 1; -@@ -612,7 +689,7 @@ ModeSwitchFound: - col |= 2; - } - -- int kc = KeysymToKeycode(keymap, keysym, &col); -+ kc = KeysymToKeycode(keymap, keysym, &col); - - /* - * Sort out the "shifted Tab" mess. If we are sent a shifted Tab, -@@ -689,6 +766,7 @@ ModeSwitchFound: - return; - } - -+#if XORG < 17 - /* - * See if it's a modifier key. If so, then don't do any auto-repeat, - * because the X server will translate each press into a release -@@ -703,6 +781,17 @@ ModeSwitchFound: - } - } - } -+#else -+ /* -+ * If you would like to press a key which is already pressed then -+ * viewer didn't send the "release" event. In this case release it -+ * before the press. -+ */ -+ if (IS_PRESSED(keyc, kc) && down) { -+ vlog.debug("KeyRelease for %d wasn't sent, releasing", kc); -+ pressKey(keyboardDev, kc, false, "fixing keycode"); -+ } -+#endif - - if (maxKeysPerMod != 0) { - ModifierState shift(keyboardDev, ShiftMapIndex); -@@ -724,8 +813,10 @@ ModeSwitchFound: - * pressKey call, otherwise fake modifier keypress can be lost. - */ - pressKey(keyboardDev, kc, down, "keycode"); -- } else -+ } else { -+press: - pressKey(keyboardDev, kc, down, "keycode"); -+ } - - - FREE_MAPS;