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

unix/xserver/hw/vnc/vncExtInit.cc
unix/xserver/hw/vnc/xf86vncModule.cc
unix/xserver/hw/vnc/xorg-version.h
unix/xserver112.patch [new file with mode: 0644]

index 7d865ed12dd4cde7d037f0498046b2b28220eae3..898d2f640abd068c061521cc12e44d5f5c30b1bd 100644 (file)
@@ -59,6 +59,7 @@ extern "C" {
 #include "XserverDesktop.h"
 #include "vncHooks.h"
 #include "vncExtInit.h"
+#include "xorg-version.h"
 
 extern "C" {
 
@@ -449,10 +450,16 @@ void vncClientCutText(const char* str, int len)
       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 @@ void vncQueryConnect(XserverDesktop* desktop, void* opaqueId)
       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 @@ static void SendSelectionChangeEvent(Atom selection)
       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 @@ static int ProcVncExtSetParam(ClientPtr client)
   param.buf[stuff->paramLen] = 0;
 
   xVncExtSetParamReply rep;
-  int n;
   rep.type = X_Reply;
   rep.length = 0;
   rep.success = 0;
@@ -603,8 +620,14 @@ static int ProcVncExtSetParam(ClientPtr client)
 
 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 @@ deny:
 
 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 @@ static int ProcVncExtGetParam(ClientPtr client)
   param.buf[stuff->paramLen] = 0;
 
   xVncExtGetParamReply rep;
-  int n;
   rep.type = X_Reply;
   rep.sequenceNumber = client->sequence;
   rep.success = 0;
@@ -646,9 +672,16 @@ static int ProcVncExtGetParam(ClientPtr client)
   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 ProcVncExtGetParam(ClientPtr client)
 
 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 @@ static int ProcVncExtGetParamDesc(ClientPtr client)
   param.buf[stuff->paramLen] = 0;
 
   xVncExtGetParamDescReply rep;
-  int n;
   rep.type = X_Reply;
   rep.sequenceNumber = client->sequence;
   rep.success = 0;
@@ -690,9 +726,16 @@ static int ProcVncExtGetParamDesc(ClientPtr client)
   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 ProcVncExtGetParamDesc(ClientPtr client)
 
 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 @@ static int ProcVncExtListParams(ClientPtr client)
   REQUEST_SIZE_MATCH(xVncExtListParamsReq);
 
   xVncExtListParamsReply rep;
-  int n;
   rep.type = X_Reply;
   rep.sequenceNumber = client->sequence;
 
@@ -731,9 +777,16 @@ static int ProcVncExtListParams(ClientPtr client)
   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 ProcVncExtListParams(ClientPtr client)
 
 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 ProcVncExtSetServerCutText(ClientPtr client)
 
 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 @@ static int ProcVncExtGetClientCutText(ClientPtr client)
   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 ProcVncExtGetClientCutText(ClientPtr client)
 
 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 ProcVncExtSelectInput(ClientPtr client)
 
 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 @@ static int ProcVncExtConnect(ClientPtr client)
   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 ProcVncExtConnect(ClientPtr client)
 
 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 @@ static int ProcVncExtGetQueryConnect(ClientPtr client)
     qcTimeout = 0;
 
   xVncExtGetQueryConnectReply rep;
-  int n;
   rep.type = X_Reply;
   rep.sequenceNumber = client->sequence;
   rep.timeout = qcTimeout;
@@ -934,11 +1026,20 @@ static int ProcVncExtGetQueryConnect(ClientPtr client)
   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 ProcVncExtGetQueryConnect(ClientPtr client)
 
 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 ProcVncExtApproveConnect(ClientPtr client)
 
 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);
 }
index 547ab06fe67637981df2b0fc375772b586c94e58..b1ab2756091cdc5343c2f1cce480dc08cef8fc64 100644 (file)
@@ -28,6 +28,8 @@
 #include <rfb/ScreenSet.h>
 #include <rfb/screenTypes.h>
 
+#include "xorg-version.h"
+
 extern "C" {
 #define class c_class
 #define private c_private
@@ -94,7 +96,12 @@ static void vncExtensionInitWithParams(INITARGS)
     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);
     }
index 3b6a689f91699b447f8d1f7acf108eeb8385ad48..9a2db9370fb155257cb30b180083cc025d183b6c 100644 (file)
@@ -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
diff --git a/unix/xserver112.patch b/unix/xserver112.patch
new file mode 100644 (file)
index 0000000..712889c
--- /dev/null
@@ -0,0 +1,91 @@
+diff -up xserver/configure.ac.vnc xserver/configure.ac
+--- xserver/configure.ac.vnc   2012-08-28 15:01:35.142325880 +0200
++++ xserver/configure.ac       2012-08-28 15:02:06.292300682 +0200
+@@ -30,7 +30,6 @@ AC_INIT([xorg-server], 1.12.4, [https://
+ RELEASE_DATE="2012-08-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
+@@ -1493,6 +1493,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
+@@ -1527,6 +1531,8 @@ if test "x$XORG" = xauto; then
+ fi
+ AC_MSG_RESULT([$XORG])
++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'
+@@ -1743,7 +1749,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])
+@@ -2209,6 +2214,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 15:01:35.225325813 +0200
++++ xserver/hw/Makefile.am     2012-08-28 15:02:06.292300682 +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 15:01:35.311325743 +0200
++++ xserver/mi/miinitext.c     2012-08-28 15:02:06.293300681 +0200
+@@ -266,6 +266,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.
+@@ -449,6 +452,9 @@ InitExtensions(int argc, char *argv[])
+     if (!noXFree86BigfontExtension)
+         XFree86BigfontExtensionInit();
+ #endif
++#ifdef TIGERVNC
++    vncExtensionInit();
++#endif
+ #if !defined(NO_HW_ONLY_EXTS)
+ #if defined(XF86VIDMODE)
+     if (!noXFree86VidModeExtension)