summaryrefslogtreecommitdiffstats
path: root/abs/extra/tigervnc
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/tigervnc')
-rw-r--r--abs/extra/tigervnc/PKGBUILD70
-rw-r--r--abs/extra/tigervnc/cmakelists.patch70
-rw-r--r--abs/extra/tigervnc/gethomedir.patch16
-rw-r--r--abs/extra/tigervnc/gnutls.patch36
-rw-r--r--abs/extra/tigervnc/tiger.install20
-rw-r--r--abs/extra/tigervnc/xorg111.patch235
-rw-r--r--abs/extra/tigervnc/xorg112.patch447
7 files changed, 894 insertions, 0 deletions
diff --git a/abs/extra/tigervnc/PKGBUILD b/abs/extra/tigervnc/PKGBUILD
new file mode 100644
index 0000000..061a7f7
--- /dev/null
+++ b/abs/extra/tigervnc/PKGBUILD
@@ -0,0 +1,70 @@
+# $Id: PKGBUILD 73952 2012-07-17 11:36:12Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Uroš Vampl <mobile.leecher at gmail dot com>
+
+pkgname=tigervnc
+pkgver=1.2.0
+pkgrel=7
+_xorgver=1.12.3
+pkgdesc="suite of VNC servers and clients. VNC 4 branch of TightVNC."
+arch=('i686' 'x86_64')
+url="http://www.tigervnc.org"
+license=('GPL')
+depends=('pam' 'gnutls' 'libjpeg-turbo' 'libxft' 'libxinerama' 'libxcursor'
+ 'libxtst' 'libxfont' 'pixman' 'xorg-xauth' 'xorg-xsetroot'
+ 'xkeyboard-config' 'libgl' 'libgcrypt' 'perl')
+makedepends=('cmake' 'nasm' 'xorg-font-util' 'xorg-util-macros' 'bigreqsproto'
+ 'compositeproto' 'damageproto' 'randrproto' 'resourceproto'
+ 'scrnsaverproto' 'videoproto' 'xcmiscproto' 'xf86vidmodeproto'
+ 'xtrans' 'mesa')
+options=(!libtool)
+install=tiger.install
+conflicts=('tightvnc')
+source=(http://downloads.sourceforge.net/tigervnc/${pkgname}-${pkgver}.tar.gz
+ ftp://ftp.freedesktop.org/pub/xorg/individual/xserver/xorg-server-${_xorgver}.tar.bz2
+ xorg111.patch
+ xorg112.patch
+ gnutls.patch
+ gethomedir.patch
+ cmakelists.patch)
+md5sums=('3a5755b4ed600a81c3a17976c6f8420d'
+ '65a53b11bc01dcc97ee9b201dc620c32'
+ 'b680b55f7f9f569cd26ac0b330012a8b'
+ 'f73e055153889ae7b5aac8e697f7a841'
+ '1a5fe8867ab3e49e20aafc70c415494f'
+ 'fa059baabe72308bf82622bca73cb3e0'
+ '6ef923c71cc0e79c4b37eb3b124eea75')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ cp -r ${srcdir}/xorg-server-${_xorgver}/* unix/xserver
+ patch -Np1 -i ${srcdir}/gnutls.patch
+ patch -Np1 -i ${srcdir}/gethomedir.patch
+ patch -Np1 -i ${srcdir}/cmakelists.patch
+ patch -Np1 -i ${srcdir}/xorg111.patch
+ patch -Np1 -i ${srcdir}/xorg112.patch
+
+ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DUSE_INCLUDED_FLTK=yes
+ make
+
+ cd unix/xserver
+ patch -Np1 -i ../xserver110.patch
+ autoreconf -fiv
+ ./configure --prefix=/usr \
+ --disable-static --disable-xinerama --without-dtrace \
+ --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
+ --disable-xwin --disable-xephyr --disable-kdrive --with-pic \
+ --disable-config-dbus --disable-config-hal --disable-config-udev \
+ --disable-unit-tests --disable-devel-docs --disable-dri \
+ --enable-dri2 --enable-glx --enable-glx-tls
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ cd unix/xserver/hw/vnc
+ make DESTDIR=${pkgdir} install
+ sed -i 's/iconic/nowin/' ${pkgdir}/usr/bin/vncserver
+}
diff --git a/abs/extra/tigervnc/cmakelists.patch b/abs/extra/tigervnc/cmakelists.patch
new file mode 100644
index 0000000..cc62866
--- /dev/null
+++ b/abs/extra/tigervnc/cmakelists.patch
@@ -0,0 +1,70 @@
+diff -ur tigervnc-1.2.0.orig/cmake/BuildPackages.cmake tigervnc-1.2.0/cmake/BuildPackages.cmake
+--- tigervnc-1.2.0.orig/cmake/BuildPackages.cmake 2011-11-08 10:16:36.000000000 +0100
++++ tigervnc-1.2.0/cmake/BuildPackages.cmake 2012-03-30 15:27:00.808919876 +0200
+@@ -86,5 +86,5 @@
+ # Common
+ #
+
+-install(FILES ${CMAKE_SOURCE_DIR}/LICENCE.TXT DESTINATION doc)
+-install(FILES ${CMAKE_SOURCE_DIR}/README.txt DESTINATION doc)
++install(FILES ${CMAKE_SOURCE_DIR}/LICENCE.TXT DESTINATION share/doc/${CMAKE_PROJECT_NAME}-${VERSION})
++install(FILES ${CMAKE_SOURCE_DIR}/README.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME}-${VERSION})
+diff -ur tigervnc-1.2.0.orig/CMakeLists.txt tigervnc-1.2.0/CMakeLists.txt
+--- tigervnc-1.2.0.orig/CMakeLists.txt 2012-03-09 21:34:29.000000000 +0100
++++ tigervnc-1.2.0/CMakeLists.txt 2012-03-30 15:28:59.716911575 +0200
+@@ -316,7 +316,8 @@
+ if(APPLE)
+ set(FLTK_LIBRARIES "-framework Carbon -framework Cocoa -framework ApplicationServices")
+ elseif(NOT WIN32)
+- set(FLTK_LIBRARIES "-ldl")
++ find_library(FONTCONFIG_LIB fontconfig)
++ set(FLTK_LIBRARIES "-ldl" ${FONTCONFIG_LIB})
+ endif()
+ message(STATUS "Using included FLTK library")
+ endif()
+diff -ur tigervnc-1.2.0.orig/unix/CMakeLists.txt tigervnc-1.2.0/unix/CMakeLists.txt
+--- tigervnc-1.2.0.orig/unix/CMakeLists.txt 2011-11-03 20:01:18.000000000 +0100
++++ tigervnc-1.2.0/unix/CMakeLists.txt 2012-03-30 15:27:00.808919876 +0200
+@@ -5,4 +5,4 @@
+ add_subdirectory(x0vncserver)
+
+ install(PROGRAMS vncserver DESTINATION bin)
+-install(FILES vncserver.man DESTINATION man/man1 RENAME vncserver.1)
++install(FILES vncserver.man DESTINATION share/man/man1 RENAME vncserver.1)
+diff -ur tigervnc-1.2.0.orig/unix/vncconfig/CMakeLists.txt tigervnc-1.2.0/unix/vncconfig/CMakeLists.txt
+--- tigervnc-1.2.0.orig/unix/vncconfig/CMakeLists.txt 2011-06-25 09:32:34.000000000 +0200
++++ tigervnc-1.2.0/unix/vncconfig/CMakeLists.txt 2012-03-30 15:27:00.808919876 +0200
+@@ -12,4 +12,4 @@
+ target_link_libraries(vncconfig tx rfb network rdr ${X11_LIBRARIES})
+
+ install(TARGETS vncconfig DESTINATION bin)
+-install(FILES vncconfig.man DESTINATION man/man1 RENAME vncconfig.1)
++install(FILES vncconfig.man DESTINATION share/man/man1 RENAME vncconfig.1)
+diff -ur tigervnc-1.2.0.orig/unix/vncpasswd/CMakeLists.txt tigervnc-1.2.0/unix/vncpasswd/CMakeLists.txt
+--- tigervnc-1.2.0.orig/unix/vncpasswd/CMakeLists.txt 2011-06-25 09:32:34.000000000 +0200
++++ tigervnc-1.2.0/unix/vncpasswd/CMakeLists.txt 2012-03-30 15:27:00.808919876 +0200
+@@ -6,4 +6,4 @@
+ target_link_libraries(vncpasswd tx rfb rdr os)
+
+ install(TARGETS vncpasswd DESTINATION bin)
+-install(FILES vncpasswd.man DESTINATION man/man1 RENAME vncpasswd.1)
++install(FILES vncpasswd.man DESTINATION share/man/man1 RENAME vncpasswd.1)
+diff -ur tigervnc-1.2.0.orig/unix/x0vncserver/CMakeLists.txt tigervnc-1.2.0/unix/x0vncserver/CMakeLists.txt
+--- tigervnc-1.2.0.orig/unix/x0vncserver/CMakeLists.txt 2011-08-19 18:41:06.000000000 +0200
++++ tigervnc-1.2.0/unix/x0vncserver/CMakeLists.txt 2012-03-30 15:27:00.809919874 +0200
+@@ -24,4 +24,4 @@
+ endif()
+
+ install(TARGETS x0vncserver DESTINATION bin)
+-install(FILES x0vncserver.man DESTINATION man/man1 RENAME x0vncserver.1)
++install(FILES x0vncserver.man DESTINATION share/man/man1 RENAME x0vncserver.1)
+diff -ur tigervnc-1.2.0.orig/vncviewer/CMakeLists.txt tigervnc-1.2.0/vncviewer/CMakeLists.txt
+--- tigervnc-1.2.0.orig/vncviewer/CMakeLists.txt 2011-10-05 11:32:28.000000000 +0200
++++ tigervnc-1.2.0/vncviewer/CMakeLists.txt 2012-03-30 15:27:00.809919874 +0200
+@@ -55,5 +55,5 @@
+ install(TARGETS vncviewer DESTINATION bin)
+ endif()
+ if(UNIX)
+- install(FILES vncviewer.man DESTINATION man/man1 RENAME vncviewer.1)
++ install(FILES vncviewer.man DESTINATION share/man/man1 RENAME vncviewer.1)
+ endif()
diff --git a/abs/extra/tigervnc/gethomedir.patch b/abs/extra/tigervnc/gethomedir.patch
new file mode 100644
index 0000000..9114eea
--- /dev/null
+++ b/abs/extra/tigervnc/gethomedir.patch
@@ -0,0 +1,16 @@
+--- tigervnc-1.0.90/unix/xserver/hw/vnc/Makefile.am~ 2011-04-20 13:46:16.993047050 +0200
++++ tigervnc-1.0.90/unix/xserver/hw/vnc/Makefile.am 2011-04-20 14:03:35.942724608 +0200
+@@ -1,11 +1,12 @@
+ TIGERVNC_SRCDIR=${top_srcdir}/../..
+ LIB_DIR=${top_builddir}/../../common
+
++OS_LIB=$(LIB_DIR)/os/libos.a
+ RFB_LIB=$(LIB_DIR)/rfb/librfb.la
+ RDR_LIB=$(LIB_DIR)/rdr/librdr.la
+ NETWORK_LIB=$(LIB_DIR)/network/libnetwork.la
+ XREGION_LIB=$(LIB_DIR)/Xregion/libXregion.la
+-COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(XREGION_LIB)
++COMMON_LIBS=$(NETWORK_LIB) $(OS_LIB) $(RFB_LIB) $(RDR_LIB) $(XREGION_LIB)
+
+ noinst_LTLIBRARIES = libvnccommon.la
+
diff --git a/abs/extra/tigervnc/gnutls.patch b/abs/extra/tigervnc/gnutls.patch
new file mode 100644
index 0000000..d0b7ef8
--- /dev/null
+++ b/abs/extra/tigervnc/gnutls.patch
@@ -0,0 +1,36 @@
+diff -ur tigervnc-1.2.0.orig/CMakeLists.txt tigervnc-1.2.0/CMakeLists.txt
+--- tigervnc-1.2.0.orig/CMakeLists.txt 2012-03-09 21:34:29.000000000 +0100
++++ tigervnc-1.2.0/CMakeLists.txt 2012-03-27 23:14:12.292068145 +0200
+@@ -344,7 +344,7 @@
+ # system's version (if available) to perform this test.
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES};-lz)
+ endif()
+- check_function_exists(gnutls_transport_set_global_errno HAVE_OLD_GNUTLS)
++ check_function_exists(gnutls_transport_set_global_errno HAVE_GNUTLS_GLOBAL_ERRNO)
+ check_function_exists(gnutls_x509_crt_print HAVE_GNUTLS_X509_CRT_PRINT)
+ check_type_size(gnutls_x509_crt_t GNUTLS_X509_CRT_T)
+ check_type_size(gnutls_datum_t GNUTLS_DATUM_T)
+diff -ur tigervnc-1.2.0.orig/common/rdr/TLSInStream.cxx tigervnc-1.2.0/common/rdr/TLSInStream.cxx
+--- tigervnc-1.2.0.orig/common/rdr/TLSInStream.cxx 2010-09-30 08:25:28.000000000 +0200
++++ tigervnc-1.2.0/common/rdr/TLSInStream.cxx 2012-03-27 23:14:11.166068223 +0200
+@@ -27,7 +27,7 @@
+ #include <rdr/TLSInStream.h>
+ #include <errno.h>
+
+-#ifdef HAVE_OLD_GNUTLS
++#ifndef HAVE_GNUTLS_GLOBAL_ERRNO
+ #define gnutls_transport_set_global_errno(A) do { errno = (A); } while(0)
+ #endif
+
+diff -ur tigervnc-1.2.0.orig/common/rdr/TLSOutStream.cxx tigervnc-1.2.0/common/rdr/TLSOutStream.cxx
+--- tigervnc-1.2.0.orig/common/rdr/TLSOutStream.cxx 2010-09-30 08:25:28.000000000 +0200
++++ tigervnc-1.2.0/common/rdr/TLSOutStream.cxx 2012-03-27 23:14:09.576068335 +0200
+@@ -27,7 +27,7 @@
+ #include <rdr/TLSOutStream.h>
+ #include <errno.h>
+
+-#ifdef HAVE_OLD_GNUTLS
++#ifndef HAVE_GNUTLS_GLOBAL_ERRNO
+ #define gnutls_transport_set_global_errno(A) do { errno = (A); } while(0)
+ #endif
+
diff --git a/abs/extra/tigervnc/tiger.install b/abs/extra/tigervnc/tiger.install
new file mode 100644
index 0000000..5aa9395
--- /dev/null
+++ b/abs/extra/tigervnc/tiger.install
@@ -0,0 +1,20 @@
+post_install(){
+ groupadd -g 78 vncsvc &>/dev/null
+ useradd -u 78 -m -g vncsvc -d /home/vncsvc -s /bin/bash vncsvc &>/dev/null
+ chown -R vncsvc:vncsvc /home/vncsvc &>/dev/null
+}
+
+post_upgrade(){
+ getent group vncsvc >/dev/null 2>&1 || groupadd -g 78 vncsvc &>/dev/null
+ getent passwd vncsvc >/dev/null 2>&1 || useradd -u 78 -g vncsvc -m -d /home/vncsvc -s /bin/bash vncsvc &>/dev/null
+}
+
+post_remove(){
+ if getent passwd vncsvc >/dev/null 2>&1; then
+ userdel vncsvc
+ fi
+ if getent group vncsvc >/dev/null 2>&1; then
+ groupdel vncsvc
+ fi
+}
+
diff --git a/abs/extra/tigervnc/xorg111.patch b/abs/extra/tigervnc/xorg111.patch
new file mode 100644
index 0000000..ee0ddb9
--- /dev/null
+++ b/abs/extra/tigervnc/xorg111.patch
@@ -0,0 +1,235 @@
+diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111 2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc 2011-11-11 11:59:14.226819903 +0100
+@@ -82,10 +82,11 @@ static KeyCode KeysymToKeycode(KeySymsPt
+ /* Event queue is shared between all devices. */
+ #if XORG == 15
+ static xEvent *eventq = NULL;
+-#else
++#elif XORG < 111
+ static EventList *eventq = NULL;
+ #endif
+
++#if XORG < 111
+ static void initEventq(void)
+ {
+ /* eventq is never free()-ed because it exists during server life. */
+@@ -100,7 +101,9 @@ static void initEventq(void)
+ #endif
+ }
+ }
++#endif /* XORG < 111 */
+
++#if XORG < 111
+ static void enqueueEvents(DeviceIntPtr dev, int n)
+ {
+ int i;
+@@ -122,6 +125,7 @@ static void enqueueEvents(DeviceIntPtr d
+ );
+ }
+ }
++#endif /* XORG < 111 */
+
+ InputDevice::InputDevice(rfb::VNCServerST *_server)
+ : server(_server), oldButtonMask(0)
+@@ -141,12 +145,17 @@ InputDevice::InputDevice(rfb::VNCServerS
+ keyboardProc, TRUE);
+ RegisterKeyboardDevice(keyboardDev);
+ #endif
++#if XORG < 111
+ initEventq();
++#endif
+ }
+
+ void InputDevice::PointerButtonAction(int buttonMask)
+ {
+- int i, n;
++ int i;
++#if XORG < 111
++ int n;
++#endif
+ #if XORG >= 110
+ ValuatorMask mask;
+ #endif
+@@ -160,13 +169,17 @@ void InputDevice::PointerButtonAction(in
+ #if XORG < 110
+ n = GetPointerEvents(eventq, pointerDev, action, i + 1,
+ POINTER_RELATIVE, 0, 0, NULL);
+-#else
++ enqueueEvents(pointerDev, n);
++#elif XORG < 111
+ valuator_mask_set_range(&mask, 0, 0, NULL);
+ n = GetPointerEvents(eventq, pointerDev, action, i + 1,
+ POINTER_RELATIVE, &mask);
+-#endif
+ enqueueEvents(pointerDev, n);
+-
++#else
++ valuator_mask_set_range(&mask, 0, 0, NULL);
++ QueuePointerEvents(pointerDev, action, i + 1,
++ POINTER_RELATIVE, &mask);
++#endif
+ }
+ }
+
+@@ -175,7 +188,10 @@ void InputDevice::PointerButtonAction(in
+
+ void InputDevice::PointerMove(const rfb::Point &pos)
+ {
+- int n, valuators[2];
++ int valuators[2];
++#if XORG < 111
++ int n;
++#endif
+ #if XORG >= 110
+ ValuatorMask mask;
+ #endif
+@@ -190,12 +206,16 @@ void InputDevice::PointerMove(const rfb:
+ #if XORG < 110
+ n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, 0,
+ 2, valuators);
+-#else
++ enqueueEvents(pointerDev, n);
++#elif XORG < 111
+ valuator_mask_set_range(&mask, 0, 2, valuators);
+ n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE,
+ &mask);
+-#endif
+ enqueueEvents(pointerDev, n);
++#else
++ valuator_mask_set_range(&mask, 0, 2, valuators);
++ QueuePointerEvents(pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, &mask);
++#endif
+
+ cursorPos = pos;
+ }
+@@ -299,14 +319,20 @@ void InputDevice::initInputDevice(void)
+ static inline void pressKey(DeviceIntPtr dev, int kc, bool down, const char *msg)
+ {
+ int action;
++#if XORG < 111
+ unsigned int n;
++#endif
+
+ if (msg != NULL)
+ vlog.debug("%s %d %s", msg, kc, down ? "down" : "up");
+
+ action = down ? KeyPress : KeyRelease;
+- n = GetKeyboardEvents(eventq, dev, action, kc);
++#if XORG < 111
++ n = GetKeyboardEvents(eventq, dev, action, kc, NULL);
+ enqueueEvents(dev, n);
++#else
++ QueueKeyboardEvents(dev, action, kc, NULL);
++#endif
+ }
+
+ #define IS_PRESSED(keyc, keycode) \
+@@ -341,8 +367,11 @@ public:
+ int state, maxKeysPerMod, keycode;
+ #if XORG >= 17
+ KeyCode *modmap = NULL;
+-
++#if XORG >= 111
++ state = XkbStateFieldFromRec(&dev->master->key->xkbInfo->state);
++#else /* XORG >= 111 */
+ state = XkbStateFieldFromRec(&dev->u.master->key->xkbInfo->state);
++#endif /* XORG >= 111 */
+ #else
+ KeyClassPtr keyc = dev->key;
+ state = keyc->state;
+@@ -380,7 +409,11 @@ public:
+ #if XORG >= 17
+ KeyCode *modmap = NULL;
+
++#if XORG >= 111
++ keyc = dev->master->key;
++#else /* XORG >= 111 */
+ keyc = dev->u.master->key;
++#endif /* XORG >= 111 */
+ state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
+ #else
+ keyc = dev->key;
+@@ -596,7 +629,11 @@ void InputDevice::keyEvent(rdr::U32 keys
+ }
+
+ #if XORG >= 17
++#if XORG >= 111
++ keyc = keyboardDev->master->key;
++#else /* XORG >= 111 */
+ keyc = keyboardDev->u.master->key;
++#endif /* XORG >= 111 */
+
+ keymap = XkbGetCoreMap(keyboardDev);
+ if (!keymap) {
+@@ -753,7 +790,11 @@ ModeSwitchFound:
+ XkbApplyMappingChange(keyboardDev, keymap, minKeyCode,
+ maxKeyCode - minKeyCode + 1,
+ NULL, serverClient);
++#if XORG >= 111
++ XkbCopyDeviceKeymap(keyboardDev->master, keyboardDev);
++#else
+ XkbCopyDeviceKeymap(keyboardDev->u.master, keyboardDev);
++#endif
+ #endif /* XORG < 17 */
+ break;
+ }
+diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111 2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h 2011-11-11 11:55:32.255835319 +0100
+@@ -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.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc
+--- tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 2011-08-09 23:16:36.000000000 +0200
++++ tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc 2011-11-11 11:55:32.256835319 +0100
+@@ -211,7 +211,11 @@ static void vfbFreeFramebufferMemory(vfb
+
+ extern "C" {
+
++#if XORG < 111
+ void ddxGiveUp()
++#else
++void ddxGiveUp(enum ExitCode error)
++#endif
+ {
+ int i;
+
+@@ -221,9 +225,17 @@ void ddxGiveUp()
+ }
+
+ void
++#if XORG < 111
+ AbortDDX()
++#else
++AbortDDX(enum ExitCode error)
++#endif
+ {
++#if XORG < 111
+ ddxGiveUp();
++#else
++ ddxGiveUp(error);
++#endif
+ }
+
+ #ifdef __DARWIN__
+@@ -668,8 +680,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);
+ }
+ }
diff --git a/abs/extra/tigervnc/xorg112.patch b/abs/extra/tigervnc/xorg112.patch
new file mode 100644
index 0000000..51f259e
--- /dev/null
+++ b/abs/extra/tigervnc/xorg112.patch
@@ -0,0 +1,447 @@
+diff -ur tigervnc-1.2.0.orig/unix/xserver/hw/vnc/Makefile.am tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am
+--- tigervnc-1.2.0.orig/unix/xserver/hw/vnc/Makefile.am 2011-10-31 09:14:40.000000000 +0100
++++ tigervnc-1.2.0/unix/xserver/hw/vnc/Makefile.am 2012-04-15 12:19:00.995517546 +0200
+@@ -63,7 +63,7 @@
+ BUILT_SOURCES = $(nodist_Xvnc_SOURCES)
+
+ fb.h: $(top_srcdir)/fb/fb.h
+- cat $(top_srcdir)/fb/fb.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fb.h
++ cat $(top_srcdir)/fb/fb.h | sed -e 's,and,c_and,g' -e 's,xor,c_xor,g' > $(srcdir)/fb.h
+
+ pixman.h:
+ for i in ${XSERVERLIBS_CFLAGS}; do \
+@@ -78,4 +78,4 @@
+ fi
+
+ fbrop.h: $(top_srcdir)/fb/fbrop.h
+- cat $(top_srcdir)/fb/fbrop.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fbrop.h
++ cat $(top_srcdir)/fb/fbrop.h | sed -e 's,and,c_and,g' -e 's,xor,c_xor,g' > $(srcdir)/fbrop.h
+diff -ur tigervnc-1.2.0.orig/unix/xserver/hw/vnc/vncExtInit.cc tigervnc-1.2.0/unix/xserver/hw/vnc/vncExtInit.cc
+--- tigervnc-1.2.0.orig/unix/xserver/hw/vnc/vncExtInit.cc 2011-11-07 13:51:34.000000000 +0100
++++ tigervnc-1.2.0/unix/xserver/hw/vnc/vncExtInit.cc 2012-04-15 12:18:57.819557251 +0200
+@@ -59,6 +59,7 @@
+ #include "XserverDesktop.h"
+ #include "vncHooks.h"
+ #include "vncExtInit.h"
++#include "xorg-version.h"
+
+ extern "C" {
+
+@@ -449,10 +450,16 @@
+ ev.window = cur->window;
+ ev.time = GetTimeInMillis();
+ if (cur->client->swapped) {
++#if XORG < 112
+ int n;
+ swaps(&ev.sequenceNumber, n);
+ swapl(&ev.window, n);
+ swapl(&ev.time, n);
++#else
++ swaps(&ev.sequenceNumber);
++ swapl(&ev.window);
++ swapl(&ev.time);
++#endif
+ }
+ WriteToClient(cur->client, sizeof(xVncExtClientCutTextNotifyEvent),
+ (char *)&ev);
+@@ -495,9 +502,14 @@
+ ev.sequenceNumber = cur->client->sequence;
+ ev.window = cur->window;
+ if (cur->client->swapped) {
++#if XORG < 112
+ int n;
+ swaps(&ev.sequenceNumber, n);
+ swapl(&ev.window, n);
++#else
++ swaps(&ev.sequenceNumber);
++ swapl(&ev.window);
++#endif
+ }
+ WriteToClient(cur->client, sizeof(xVncExtQueryConnectNotifyEvent),
+ (char *)&ev);
+@@ -538,10 +550,16 @@
+ ev.window = cur->window;
+ ev.selection = selection;
+ if (cur->client->swapped) {
++#if XORG < 112
+ int n;
+ swaps(&ev.sequenceNumber, n);
+ swapl(&ev.window, n);
+ swapl(&ev.selection, n);
++#else
++ swaps(&ev.sequenceNumber);
++ swapl(&ev.window);
++ swapl(&ev.selection);
++#endif
+ }
+ WriteToClient(cur->client, sizeof(xVncExtSelectionChangeNotifyEvent),
+ (char *)&ev);
+@@ -562,7 +580,6 @@
+ param.buf[stuff->paramLen] = 0;
+
+ xVncExtSetParamReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.success = 0;
+@@ -603,8 +620,14 @@
+
+ deny:
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtSetParamReply), (char *)&rep);
+ return (client->noClientException);
+@@ -612,9 +635,13 @@
+
+ static int SProcVncExtSetParam(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtSetParamReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_AT_LEAST_SIZE(xVncExtSetParamReq);
+ return ProcVncExtSetParam(client);
+ }
+@@ -628,7 +655,6 @@
+ param.buf[stuff->paramLen] = 0;
+
+ xVncExtGetParamReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.success = 0;
+@@ -646,9 +672,16 @@
+ rep.length = (len + 3) >> 2;
+ rep.valueLen = len;
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.valueLen, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++ swaps(&rep.valueLen);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtGetParamReply), (char *)&rep);
+ if (value)
+@@ -659,9 +692,13 @@
+
+ static int SProcVncExtGetParam(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtGetParamReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_AT_LEAST_SIZE(xVncExtGetParamReq);
+ return ProcVncExtGetParam(client);
+ }
+@@ -675,7 +712,6 @@
+ param.buf[stuff->paramLen] = 0;
+
+ xVncExtGetParamDescReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.success = 0;
+@@ -690,9 +726,16 @@
+ rep.length = (len + 3) >> 2;
+ rep.descLen = len;
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.descLen, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++ swaps(&rep.descLen);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtGetParamDescReply), (char *)&rep);
+ if (desc)
+@@ -702,9 +745,13 @@
+
+ static int SProcVncExtGetParamDesc(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtGetParamDescReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_AT_LEAST_SIZE(xVncExtGetParamDescReq);
+ return ProcVncExtGetParamDesc(client);
+ }
+@@ -715,7 +762,6 @@
+ REQUEST_SIZE_MATCH(xVncExtListParamsReq);
+
+ xVncExtListParamsReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+
+@@ -731,9 +777,16 @@
+ rep.length = (len + 3) >> 2;
+ rep.nParams = nParams;
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.nParams, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++ swaps(&rep.nParams);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtListParamsReply), (char *)&rep);
+ rdr::U8* data = new rdr::U8[len];
+@@ -753,9 +806,13 @@
+
+ static int SProcVncExtListParams(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtListParamsReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_SIZE_MATCH(xVncExtListParamsReq);
+ return ProcVncExtListParams(client);
+ }
+@@ -778,11 +835,19 @@
+
+ static int SProcVncExtSetServerCutText(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtSetServerCutTextReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_AT_LEAST_SIZE(xVncExtSetServerCutTextReq);
++#if XORG < 112
+ swapl(&stuff->textLen, n);
++#else
++ swapl(&stuff->textLen);
++#endif
+ return ProcVncExtSetServerCutText(client);
+ }
+
+@@ -792,15 +857,21 @@
+ REQUEST_SIZE_MATCH(xVncExtGetClientCutTextReq);
+
+ xVncExtGetClientCutTextReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.length = (clientCutTextLen + 3) >> 2;
+ rep.sequenceNumber = client->sequence;
+ rep.textLen = clientCutTextLen;
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.textLen, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++ swapl(&rep.textLen);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtGetClientCutTextReply), (char *)&rep);
+ if (clientCutText)
+@@ -810,9 +881,13 @@
+
+ static int SProcVncExtGetClientCutText(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtGetClientCutTextReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_SIZE_MATCH(xVncExtGetClientCutTextReq);
+ return ProcVncExtGetClientCutText(client);
+ }
+@@ -842,12 +917,21 @@
+
+ static int SProcVncExtSelectInput(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtSelectInputReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_SIZE_MATCH(xVncExtSelectInputReq);
++#if XORG < 112
+ swapl(&stuff->window, n);
+ swapl(&stuff->mask, n);
++#else
++ swapl(&stuff->window);
++ swapl(&stuff->mask);
++#endif
+ return ProcVncExtSelectInput(client);
+ }
+
+@@ -893,9 +977,14 @@
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ if (client->swapped) {
++#if XORG < 112
+ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.length);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtConnectReply), (char *)&rep);
+ return (client->noClientException);
+@@ -903,9 +992,13 @@
+
+ static int SProcVncExtConnect(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtConnectReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_AT_LEAST_SIZE(xVncExtConnectReq);
+ return ProcVncExtConnect(client);
+ }
+@@ -925,7 +1018,6 @@
+ qcTimeout = 0;
+
+ xVncExtGetQueryConnectReply rep;
+- int n;
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.timeout = qcTimeout;
+@@ -934,11 +1026,20 @@
+ rep.opaqueId = (CARD32)(long)queryConnectId;
+ rep.length = (rep.userLen + rep.addrLen + 3) >> 2;
+ if (client->swapped) {
++#if XORG < 112
++ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.userLen, n);
+ swapl(&rep.addrLen, n);
+ swapl(&rep.timeout, n);
+ swapl(&rep.opaqueId, n);
++#else
++ swaps(&rep.sequenceNumber);
++ swapl(&rep.userLen);
++ swapl(&rep.addrLen);
++ swapl(&rep.timeout);
++ swapl(&rep.opaqueId);
++#endif
+ }
+ WriteToClient(client, sizeof(xVncExtGetQueryConnectReply), (char *)&rep);
+ if (qcTimeout)
+@@ -950,9 +1051,13 @@
+
+ static int SProcVncExtGetQueryConnect(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtGetQueryConnectReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
++#else
++ swaps(&stuff->length);
++#endif
+ REQUEST_SIZE_MATCH(xVncExtGetQueryConnectReq);
+ return ProcVncExtGetQueryConnect(client);
+ }
+@@ -977,10 +1082,15 @@
+
+ static int SProcVncExtApproveConnect(ClientPtr client)
+ {
+- register char n;
+ REQUEST(xVncExtApproveConnectReq);
++#if XORG < 112
++ register char n;
+ swaps(&stuff->length, n);
+ swapl(&stuff->opaqueId, n);
++#else
++ swaps(&stuff->length);
++ swapl(&stuff->opaqueId);
++#endif
+ REQUEST_SIZE_MATCH(xVncExtApproveConnectReq);
+ return ProcVncExtApproveConnect(client);
+ }
+diff -ur tigervnc-1.2.0.orig/unix/xserver/hw/vnc/xf86vncModule.cc tigervnc-1.2.0/unix/xserver/hw/vnc/xf86vncModule.cc
+--- tigervnc-1.2.0.orig/unix/xserver/hw/vnc/xf86vncModule.cc 2010-04-23 15:55:10.000000000 +0200
++++ tigervnc-1.2.0/unix/xserver/hw/vnc/xf86vncModule.cc 2012-04-15 12:18:57.820557239 +0200
+@@ -26,6 +26,8 @@
+ #include <rfb/Logger_stdio.h>
+ #include <rfb/LogWriter.h>
+
++#include "xorg-version.h"
++
+ extern "C" {
+ #define class c_class
+ #define private c_private
+@@ -89,7 +91,12 @@
+ ScrnInfoPtr pScrn = xf86Screens[scr];
+
+ for (ParameterIterator i(Configuration::global()); i.param; i.next()) {
+- char* val = xf86FindOptionValue(pScrn->options, i.param->getName());
++ const char *val;
++#if XORG < 112
++ val = xf86FindOptionValue(pScrn->options, i.param->getName());
++#else
++ val = xf86FindOptionValue((XF86OptionPtr)pScrn->options, i.param->getName());
++#endif
+ if (val)
+ i.param->setParam(val);
+ }
+diff -ur tigervnc-1.2.0.orig/unix/xserver/hw/vnc/xorg-version.h tigervnc-1.2.0/unix/xserver/hw/vnc/xorg-version.h
+--- tigervnc-1.2.0.orig/unix/xserver/hw/vnc/xorg-version.h 2012-04-15 12:18:21.272014160 +0200
++++ tigervnc-1.2.0/unix/xserver/hw/vnc/xorg-version.h 2012-04-15 12:18:57.821557227 +0200
+@@ -38,6 +38,8 @@
+ #define XORG 110
+ #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (11 * 100000) + (99 * 1000))
+ #define XORG 111
++#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (12 * 100000) + (99 * 1000))
++#define XORG 112
+ #else
+ #error "X.Org newer than 1.10 is not supported"
+ #endif