]> source.dussan.org Git - tigervnc.git/commitdiff
Add Support for X.Org 1.11.X
authorAdam Tkac <atkac@redhat.com>
Tue, 28 Aug 2012 12:41:44 +0000 (12:41 +0000)
committerAdam Tkac <atkac@redhat.com>
Tue, 28 Aug 2012 12:41:44 +0000 (12:41 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4978 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/xserver/hw/vnc/Input.cc
unix/xserver/hw/vnc/xorg-version.h
unix/xserver/hw/vnc/xvnc.cc
unix/xserver111.patch [new file with mode: 0644]

index 7247eae83307c70f87d96660f34da73ea9e4b628..9b32648bad98333a47c78d1febd50d21edc5730c 100644 (file)
@@ -82,10 +82,11 @@ static KeyCode KeysymToKeycode(KeySymsPtr keymap, KeySym ks, int* col);
 /* 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 dev, int n)
                           );
        }
 }
+#endif /* XORG < 111 */
 
 InputDevice::InputDevice(rfb::VNCServerST *_server)
        : server(_server), oldButtonMask(0)
@@ -141,12 +145,17 @@ InputDevice::InputDevice(rfb::VNCServerST *_server)
                                     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(int buttonMask)
 #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(int buttonMask)
 
 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::Point &pos)
 #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;
 }
@@ -298,14 +318,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) \
@@ -340,8 +366,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;
@@ -379,7 +408,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;
@@ -595,7 +628,11 @@ void InputDevice::keyEvent(rdr::U32 keysym, bool down)
        }
 
 #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) {
@@ -752,7 +789,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;
                }
index 9493e5beb2acfd3a83dfd632bf738e65775d5e4b..3b6a689f91699b447f8d1f7acf108eeb8385ad48 100644 (file)
@@ -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
index 4a69d752033c797e6e1498b88270a56692f47dda..fcf7deb56acdba17ebc27789bd5e095183db097d 100644 (file)
@@ -229,7 +229,11 @@ Bool DPMSSupported()
 }
 #endif
 
+#if XORG < 111
 void ddxGiveUp()
+#else
+void ddxGiveUp(enum ExitCode error)
+#endif
 {
     int i;
 
@@ -239,9 +243,17 @@ void ddxGiveUp()
 }
 
 void
+#if XORG < 111
 AbortDDX()
+#else
+AbortDDX(enum ExitCode error)
+#endif
 {
+#if XORG < 111
     ddxGiveUp();
+#else
+    ddxGiveUp(error);
+#endif
 }
 
 #ifdef __DARWIN__
@@ -686,8 +698,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/unix/xserver111.patch b/unix/xserver111.patch
new file mode 100644 (file)
index 0000000..03e0d6d
--- /dev/null
@@ -0,0 +1,91 @@
+diff -up xserver/configure.ac.vnc xserver/configure.ac
+--- xserver/configure.ac.vnc   2012-08-28 14:08:11.523694314 +0200
++++ xserver/configure.ac       2012-08-28 14:08:59.122696574 +0200
+@@ -30,7 +30,6 @@ AC_INIT([xorg-server], 1.11.4, [https://
+ RELEASE_DATE="2012-01-27"
+ AC_CONFIG_SRCDIR([Makefile.am])
+ AM_INIT_AUTOMAKE([foreign dist-bzip2])
+-AM_MAINTAINER_MODE
+ # Require xorg-macros minimum of 1.14 for XORG_COMPILER_BRAND in XORG_DEFAULT_OPTIONS
+ m4_ifndef([XORG_MACROS_VERSION],
+@@ -72,6 +71,7 @@ dnl forcing an entire recompile.x
+ AC_CONFIG_HEADERS(include/version-config.h)
+ AM_PROG_AS
++AC_PROG_CXX
+ AC_PROG_LN_S
+ AC_LIBTOOL_WIN32_DLL
+ AC_DISABLE_STATIC
+@@ -1476,6 +1476,10 @@ if test "x$XVFB" = xyes; then
+       AC_SUBST([XVFB_SYS_LIBS])
+ fi
++dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XEXT_INC $FB_INC $MI_INC $RENDER_INC $RANDR_INC"])
++AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
++AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
+ dnl Xnest DDX
+@@ -1514,6 +1518,8 @@ xorg_bus_linuxpci=no
+ xorg_bus_bsdpci=no
+ xorg_bus_sparc=no
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ if test "x$XORG" = xyes; then
+       XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+       XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+@@ -1750,7 +1756,6 @@ if test "x$XORG" = xyes; then
+       AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+       AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+       AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
+-      AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+       AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+       AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+       AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
+@@ -2217,6 +2222,7 @@ hw/dmx/Makefile
+ hw/dmx/man/Makefile
+ hw/vfb/Makefile
+ hw/vfb/man/Makefile
++hw/vnc/Makefile
+ hw/xnest/Makefile
+ hw/xnest/man/Makefile
+ hw/xwin/Makefile
+diff -up xserver/hw/Makefile.am.vnc xserver/hw/Makefile.am
+--- xserver/hw/Makefile.am.vnc 2012-08-28 14:08:12.554694327 +0200
++++ xserver/hw/Makefile.am     2012-08-28 14:08:59.123696574 +0200
+@@ -33,7 +33,8 @@ SUBDIRS =                    \
+       $(XNEST_SUBDIRS)        \
+       $(DMX_SUBDIRS)          \
+       $(KDRIVE_SUBDIRS)       \
+-      $(XQUARTZ_SUBDIRS)
++      $(XQUARTZ_SUBDIRS)      \
++      vnc
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
+diff -up xserver/mi/miinitext.c.vnc xserver/mi/miinitext.c
+--- xserver/mi/miinitext.c.vnc 2012-08-28 14:08:13.063694337 +0200
++++ xserver/mi/miinitext.c     2012-08-28 14:08:59.123696574 +0200
+@@ -263,6 +263,9 @@ extern void DamageExtensionInit(INITARGS
+ extern void CompositeExtensionInit(INITARGS);
+ #endif
+ extern void GEExtensionInit(INITARGS);
++#ifdef TIGERVNC
++extern void vncExtensionInit(INITARGS);
++#endif
+ /* The following is only a small first step towards run-time
+  * configurable extensions.
+@@ -433,6 +436,9 @@ InitExtensions(int argc, char *argv[])
+ #ifdef XF86BIGFONT
+     if (!noXFree86BigfontExtension) XFree86BigfontExtensionInit();
+ #endif
++#ifdef TIGERVNC
++    vncExtensionInit();
++#endif
+ #if !defined(NO_HW_ONLY_EXTS)
+ #if defined(XF86VIDMODE)
+     if (!noXFree86VidModeExtension) XFree86VidModeExtensionInit();