From 6db666fe0e8e85eb2772b023bfa66e71fa3558e9 Mon Sep 17 00:00:00 2001 From: Adam Tkac Date: May 12 2011 10:37:32 +0000 Subject: Make Xvnc buildable against X.Org 1.11 Signed-off-by: Adam Tkac --- diff --git a/tigervnc.spec b/tigervnc.spec index d362482..9686c83 100644 --- a/tigervnc.spec +++ b/tigervnc.spec @@ -1,6 +1,6 @@ Name: tigervnc Version: 1.0.90 -Release: 4%{?dist} +Release: 5%{?dist} Summary: A TigerVNC remote display system Group: User Interface/Desktops @@ -47,6 +47,7 @@ Patch12: tigervnc11-glx.patch Patch13: tigervnc11-rh692048.patch Patch14: 0001-Use-memmove-instead-of-memcpy-in-fbblt.c-when-memory.patch Patch15: tigervnc11-CVE-2011-1775.patch +Patch16: tigervnc11-xorg111.patch %description Virtual Network Computing (VNC) is a remote display system which @@ -146,6 +147,7 @@ patch -p1 -b --suffix .vnc < %{SOURCE7} popd %patch15 -p0 -b .CVE-2011-1775 +%patch16 -p1 -b .xorg111 # Use newer gettext sed -i 's/AM_GNU_GETTEXT_VERSION.*/AM_GNU_GETTEXT_VERSION([0.18.1])/' \ @@ -171,13 +173,13 @@ autoreconf -fiv --with-fontdir=%{_datadir}/X11/fonts \ --with-xkb-output=%{_localstatedir}/lib/xkb \ --enable-install-libxf86config \ - --disable-dri2 \ - --enable-glx \ + --enable-glx --disable-dri --enable-dri2 \ --disable-config-dbus \ --disable-config-hal \ --disable-config-udev \ --with-dri-driver-path=%{_libdir}/dri \ - --without-dtrace + --without-dtrace \ + --disable-unit-tests make %{?_smp_mflags} popd @@ -307,6 +309,9 @@ fi %doc LICENCE.TXT %changelog +* Tue May 12 2011 Adam Tkac - 1.0.90-5 +- make Xvnc buildable against X.Org 1.11 + * Tue May 10 2011 Adam Tkac - 1.0.90-4 - viewer can send password without proper validation of X.509 certs (CVE-2011-1775) diff --git a/tigervnc11-xorg111.patch b/tigervnc11-xorg111.patch new file mode 100644 index 0000000..2588ab7 --- /dev/null +++ b/tigervnc11-xorg111.patch @@ -0,0 +1,95 @@ +diff -up tigervnc-1.0.90/unix/xserver/hw/vnc/Input.cc.xorg111 tigervnc-1.0.90/unix/xserver/hw/vnc/Input.cc +--- tigervnc-1.0.90/unix/xserver/hw/vnc/Input.cc.xorg111 2011-05-12 10:42:52.813229993 +0200 ++++ tigervnc-1.0.90/unix/xserver/hw/vnc/Input.cc 2011-05-12 10:52:41.036211939 +0200 +@@ -305,7 +305,7 @@ static inline void pressKey(DeviceIntPtr + vlog.debug("%s %d %s", msg, kc, down ? "down" : "up"); + + action = down ? KeyPress : KeyRelease; +- n = GetKeyboardEvents(eventq, dev, action, kc); ++ n = GetKeyboardEvents(eventq, dev, action, kc, NULL); + enqueueEvents(dev, n); + } + +@@ -341,8 +341,11 @@ public: + int state, maxKeysPerMod, keycode; + #if XORG >= 17 + KeyCode *modmap = NULL; ++ DeviceIntPtr master; + +- state = XkbStateFieldFromRec(&dev->u.master->key->xkbInfo->state); ++ master = GetMaster(dev, MASTER_KEYBOARD); ++ ++ state = XkbStateFieldFromRec(&master->key->xkbInfo->state); + #else + KeyClassPtr keyc = dev->key; + state = keyc->state; +@@ -379,8 +382,10 @@ public: + KeyClassPtr keyc; + #if XORG >= 17 + KeyCode *modmap = NULL; ++ DeviceIntPtr master; + +- keyc = dev->u.master->key; ++ master = GetMaster(dev, MASTER_KEYBOARD); ++ keyc = master->key; + state = XkbStateFieldFromRec(&keyc->xkbInfo->state); + #else + keyc = dev->key; +@@ -565,9 +570,7 @@ static inline int isModifier(KeySymsPtr + + void InputDevice::keyEvent(rdr::U32 keysym, bool down) + { +-#if XORG < 17 + DeviceIntPtr master; +-#endif + KeyClassPtr keyc; + KeySymsPtr keymap = NULL; + KeySym *map = NULL; +@@ -596,7 +599,8 @@ void InputDevice::keyEvent(rdr::U32 keys + } + + #if XORG >= 17 +- keyc = keyboardDev->u.master->key; ++ master = GetMaster(keyboardDev, MASTER_KEYBOARD); ++ keyc = master->key; + + keymap = XkbGetCoreMap(keyboardDev); + if (!keymap) { +@@ -753,7 +757,7 @@ ModeSwitchFound: + XkbApplyMappingChange(keyboardDev, keymap, minKeyCode, + maxKeyCode - minKeyCode + 1, + NULL, serverClient); +- XkbCopyDeviceKeymap(keyboardDev->u.master, keyboardDev); ++ XkbCopyDeviceKeymap(master, keyboardDev); + #endif /* XORG < 17 */ + break; + } +diff -up tigervnc-1.0.90/unix/xserver/hw/vnc/xorg-version.h.xorg111 tigervnc-1.0.90/unix/xserver/hw/vnc/xorg-version.h +--- tigervnc-1.0.90/unix/xserver/hw/vnc/xorg-version.h.xorg111 2011-05-12 10:40:34.109227333 +0200 ++++ tigervnc-1.0.90/unix/xserver/hw/vnc/xorg-version.h 2011-05-12 10:41:10.970229530 +0200 +@@ -36,6 +36,8 @@ + #define XORG 19 + #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (10 * 100000) + (99 * 1000)) + #define XORG 110 ++#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (11 * 100000) + (99 * 1000)) ++#define XORG 111 + #else + #error "X.Org newer than 1.10 is not supported" + #endif +diff -up tigervnc-1.0.90/unix/xserver/hw/vnc/xvnc.cc.xorg111 tigervnc-1.0.90/unix/xserver/hw/vnc/xvnc.cc +--- tigervnc-1.0.90/unix/xserver/hw/vnc/xvnc.cc.xorg111 2011-05-12 10:54:21.068235787 +0200 ++++ tigervnc-1.0.90/unix/xserver/hw/vnc/xvnc.cc 2011-05-12 10:59:01.867225478 +0200 +@@ -670,8 +670,13 @@ vfbUninstallColormap(ColormapPtr pmap) + { + if (pmap->mid != pmap->pScreen->defColormap) + { ++#if XORG < 111 + curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, + RT_COLORMAP); ++#else ++ dixLookupResourceByType((pointer *) &curpmap, pmap->pScreen->defColormap, ++ RT_COLORMAP, serverClient, DixUnknownAccess); ++#endif + (*pmap->pScreen->InstallColormap)(curpmap); + } + }