[tigervnc] - separate Xvnc, vncpasswd and vncconfig to -server-minimal subpkg (#626946) - move license to separ
Adam Tkac
atkac at fedoraproject.org
Wed Aug 25 14:04:50 UTC 2010
commit 1557084616840a00a7bc0c9717da433e0040c47b
Author: Adam Tkac <atkac at redhat.com>
Date: Wed Aug 25 16:04:16 2010 +0200
- separate Xvnc, vncpasswd and vncconfig to -server-minimal subpkg (#626946)
- move license to separate subpkg and Requires it from main subpkgs
- Xvnc: handle situations when no modifiers exist well (#611677)
Signed-off-by: Adam Tkac <atkac at redhat.com>
...ess-from-generate_modkeymap-when-max_keys.patch | 60 ++++++++++++
tigervnc.spec | 65 ++++++++++---
tigervnc11-rh611677.patch | 98 ++++++++++++++++++++
3 files changed, 210 insertions(+), 13 deletions(-)
---
diff --git a/0001-Return-Success-from-generate_modkeymap-when-max_keys.patch b/0001-Return-Success-from-generate_modkeymap-when-max_keys.patch
new file mode 100644
index 0000000..1c03169
--- /dev/null
+++ b/0001-Return-Success-from-generate_modkeymap-when-max_keys.patch
@@ -0,0 +1,60 @@
+From 3fae47581a47613f1117b8794ae37b75ace73f3e Mon Sep 17 00:00:00 2001
+From: Adam Tkac <atkac at redhat.com>
+Date: Tue, 24 Aug 2010 17:21:30 +0200
+Subject: [PATCH] Return Success from generate_modkeymap() when max_keys_per_mod is zero.
+
+max_keys_per_mod equal to zero is a valid situation so generate_modkeymap
+should not return BadAlloc in this case.
+
+Signed-off-by: Adam Tkac <atkac at redhat.com>
+---
+ dix/inpututils.c | 24 +++++++++++++-----------
+ 1 files changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/dix/inpututils.c b/dix/inpututils.c
+index 8ec80b5..6693c67 100644
+--- a/dix/inpututils.c
++++ b/dix/inpututils.c
+@@ -286,7 +286,7 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
+ {
+ CARD8 keys_per_mod[8];
+ int max_keys_per_mod;
+- KeyCode *modkeymap;
++ KeyCode *modkeymap = NULL;
+ int i, j, ret;
+
+ ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
+@@ -310,18 +310,20 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
+ }
+ }
+
+- modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
+- if (!modkeymap)
+- return BadAlloc;
++ if (max_keys_per_mod != 0) {
++ modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
++ if (!modkeymap)
++ return BadAlloc;
+
+- for (i = 0; i < 8; i++)
+- keys_per_mod[i] = 0;
++ for (i = 0; i < 8; i++)
++ keys_per_mod[i] = 0;
+
+- for (i = 8; i < MAP_LENGTH; i++) {
+- for (j = 0; j < 8; j++) {
+- if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
+- modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
+- keys_per_mod[j]++;
++ for (i = 8; i < MAP_LENGTH; i++) {
++ for (j = 0; j < 8; j++) {
++ if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
++ modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
++ keys_per_mod[j]++;
++ }
+ }
+ }
+ }
+--
+1.7.2.2
+
diff --git a/tigervnc.spec b/tigervnc.spec
index c8b9b22..8ef01ee 100644
--- a/tigervnc.spec
+++ b/tigervnc.spec
@@ -2,7 +2,7 @@
Name: tigervnc
Version: 1.0.90
-Release: 0.18.%{snap}%{?dist}
+Release: 0.19.%{snap}%{?dist}
Summary: A TigerVNC remote display system
Group: User Interface/Desktops
@@ -31,7 +31,8 @@ BuildRequires: nasm
Requires(post): coreutils
Requires(postun):coreutils
-Requires: hicolor-icon-theme
+Requires: hicolor-icon-theme
+Requires: tigervnc-license
Provides: vnc = 4.1.3-2, vnc-libs = 4.1.3-2
Obsoletes: vnc < 4.1.3-2, vnc-libs < 4.1.3-2
@@ -42,6 +43,8 @@ Patch0: tigervnc-102434.patch
Patch4: tigervnc-cookie.patch
Patch8: tigervnc-viewer-reparent.patch
Patch10: tigervnc11-ldnow.patch
+Patch11: 0001-Return-Success-from-generate_modkeymap-when-max_keys.patch
+Patch12: tigervnc11-rh611677.patch
%description
Virtual Network Computing (VNC) is a remote display system which
@@ -58,21 +61,35 @@ Provides: vnc-server = 4.1.3-2, vnc-libs = 4.1.3-2
Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
Provides: tightvnc-server = 1.5.0-0.15.20090204svn3586
Obsoletes: tightvnc-server < 1.5.0-0.15.20090204svn3586
+Requires: perl
+Requires: tigervnc-server-minimal
+Requires: xorg-x11-xauth
+
+%description server
+The VNC system allows you to access the same desktop from a wide
+variety of platforms. This package includes set of utilities
+which make usage of TigerVNC server more user friendly. It also
+contains x0vncserver program which can export your active
+X session.
+
+%package server-minimal
+Summary: A minimal installation of TigerVNC server
+Group: User Interface/X
Requires(post): chkconfig
Requires(preun):chkconfig
Requires(preun):initscripts
Requires(postun):initscripts
-Requires: perl
# Check you don't reintroduce #498184 again
Requires: xorg-x11-fonts-misc
-Requires: xorg-x11-xauth
Requires: mesa-dri-drivers, xkeyboard-config, xorg-x11-xkb-utils
+Requires: tigervnc-license
-%description server
+%description server-minimal
The VNC system allows you to access the same desktop from a wide
-variety of platforms. This package is a TigerVNC server, allowing
-others to access the desktop on your machine.
+variety of platforms. This package contains minimal installation
+of TigerVNC server, allowing others to access the desktop on your
+machine.
%ifnarch s390 s390x
%package server-module
@@ -83,6 +100,7 @@ Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
Provides: tightvnc-server-module = 1.5.0-0.15.20090204svn3586
Obsoletes: tightvnc-server-module < 1.5.0-0.15.20090204svn3586
Requires: xorg-x11-server-Xorg
+Requires: tigervnc-license
%description server-module
This package contains libvnc.so module to X server, allowing others
@@ -99,6 +117,14 @@ BuildArch: noarch
The Java TigerVNC viewer applet for web browsers. Install this package to allow
clients to use web browser when connect to the TigerVNC server.
+%package license
+Summary: License of TigerVNC suite
+Group: User Interface/X
+BuildArch: noarch
+
+%description license
+This package contains license of the TigerVNC suite
+
%prep
%setup -q -n %{name}-%{version}-%{snap}
@@ -106,6 +132,7 @@ clients to use web browser when connect to the TigerVNC server.
%patch4 -p1 -b .cookie
%patch8 -p1 -b .viewer-reparent
%patch10 -p1 -b .ldnow
+%patch12 -p1 -b .rh611677
cp -r /usr/share/xorg-x11-server-source/* unix/xserver
pushd unix/xserver
@@ -113,6 +140,7 @@ for all in `find . -type f -perm -001`; do
chmod -x "$all"
done
patch -p1 -b --suffix .vnc < ../xserver19.patch
+%patch11 -p1 -b .rh611677-xorg
popd
# Use newer gettext
@@ -236,7 +264,7 @@ fi
%files -f %{name}.lang
%defattr(-,root,root,-)
-%doc LICENCE.TXT unix/README
+%doc unix/README
%{_bindir}/vncviewer
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/applications/*
@@ -244,18 +272,21 @@ fi
%files server
%defattr(-,root,root,-)
-%{_initddir}/vncserver
%config(noreplace) %{_sysconfdir}/sysconfig/vncservers
+%{_initddir}/vncserver
+%{_bindir}/x0vncserver
+%{_bindir}/vncserver
+%{_mandir}/man1/vncserver.1*
+%{_mandir}/man1/x0vncserver.1*
+
+%files server-minimal
+%defattr(-,root,root,-)
%{_bindir}/vncconfig
%{_bindir}/vncpasswd
-%{_bindir}/x0vncserver
%{_bindir}/Xvnc
-%{_bindir}/vncserver
%{_mandir}/man1/Xvnc.1*
%{_mandir}/man1/vncpasswd.1*
%{_mandir}/man1/vncconfig.1*
-%{_mandir}/man1/vncserver.1*
-%{_mandir}/man1/x0vncserver.1*
%ifnarch s390 s390x
%files server-module
@@ -268,7 +299,15 @@ fi
%doc java/src/com/tigervnc/vncviewer/README
%{_datadir}/vnc/classes/*
+%files license
+%doc LICENCE.TXT
+
%changelog
+* Wed Aug 25 2010 Adam Tkac <atkac redhat com> 1.0.90-0.19.20100813svn4123
+- separate Xvnc, vncpasswd and vncconfig to -server-minimal subpkg (#626946)
+- move license to separate subpkg and Requires it from main subpkgs
+- Xvnc: handle situations when no modifiers exist well (#611677)
+
* Fri Aug 13 2010 Adam Tkac <atkac redhat com> 1.0.90-0.18.20100813svn4123
- update to r4123 (#617973)
- add perl requires to -server subpkg (#619791)
diff --git a/tigervnc11-rh611677.patch b/tigervnc11-rh611677.patch
new file mode 100644
index 0000000..029854b
--- /dev/null
+++ b/tigervnc11-rh611677.patch
@@ -0,0 +1,98 @@
+diff -up tigervnc-1.0.90-20100420svn4030/unix/xserver/hw/vnc/Input.cc.rh611677 tigervnc-1.0.90-20100420svn4030/unix/xserver/hw/vnc/Input.cc
+--- tigervnc-1.0.90-20100420svn4030/unix/xserver/hw/vnc/Input.cc.rh611677 2010-08-24 17:40:00.511860227 +0200
++++ tigervnc-1.0.90-20100420svn4030/unix/xserver/hw/vnc/Input.cc 2010-08-24 17:49:23.169007409 +0200
+@@ -322,6 +322,11 @@ public:
+ return;
+ }
+
++ if (maxKeysPerMod == 0) {
++ vlog.debug("Keyboard has no modifiers");
++ return;
++ }
++
+ keycode = modmap[modIndex * maxKeysPerMod];
+ xfree(modmap);
+ #else
+@@ -355,6 +360,11 @@ public:
+ vlog.error("generate_modkeymap failed");
+ return;
+ }
++
++ if (maxKeysPerMod == 0) {
++ vlog.debug("Keyboard has no modifiers");
++ return;
++ }
+ #else
+ maxKeysPerMod = keyc->maxKeysPerModifier;
+ #endif
+@@ -530,6 +540,9 @@ void InputDevice::keyEvent(rdr::U32 keys
+ return;
+ }
+
++ if (maxKeysPerMod == 0)
++ vlog.debug("Keyboard has no modifiers");
++
+ state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
+ #else
+ keyc = keyboardDev->key;
+@@ -565,11 +578,13 @@ void InputDevice::keyEvent(rdr::U32 keys
+ ModeSwitchFound:
+
+ int col = 0;
+- if ((state & (1 << ShiftMapIndex)) != 0)
+- col |= 1;
+- if (modeSwitchMapIndex != 0 &&
+- ((state & (1 << modeSwitchMapIndex))) != 0)
+- col |= 2;
++ if (maxKeysPerMod != 0) {
++ if ((state & (1 << ShiftMapIndex)) != 0)
++ col |= 1;
++ if (modeSwitchMapIndex != 0 &&
++ ((state & (1 << modeSwitchMapIndex))) != 0)
++ col |= 2;
++ }
+
+ int kc = KeysymToKeycode(keymap, keysym, &col);
+
+@@ -581,7 +596,8 @@ ModeSwitchFound:
+ * We never get ISO_Left_Tab here because it's already been translated
+ * in VNCSConnectionST.
+ */
+- if (keysym == XK_Tab && ((state & (1 << ShiftMapIndex))) != 0)
++ if (maxKeysPerMod != 0 && keysym == XK_Tab &&
++ ((state & (1 << ShiftMapIndex))) != 0)
+ col |= 1;
+
+ if (kc == 0) {
+@@ -662,18 +678,20 @@ ModeSwitchFound:
+ }
+ }
+
+- ModifierState shift(keyboardDev, ShiftMapIndex);
+- ModifierState modeSwitch(keyboardDev, modeSwitchMapIndex);
+- if (down) {
+- if (col & 1)
+- shift.press();
+- else
+- shift.release();
+- if (modeSwitchMapIndex) {
+- if (col & 2)
+- modeSwitch.press();
++ if (maxKeysPerMod != 0) {
++ ModifierState shift(keyboardDev, ShiftMapIndex);
++ ModifierState modeSwitch(keyboardDev, modeSwitchMapIndex);
++ if (down) {
++ if (col & 1)
++ shift.press();
+ else
+- modeSwitch.release();
++ shift.release();
++ if (modeSwitchMapIndex) {
++ if (col & 2)
++ modeSwitch.press();
++ else
++ modeSwitch.release();
++ }
+ }
+ }
+
More information about the scm-commits
mailing list