aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Tkac <atkac@redhat.com>2012-08-28 13:32:19 +0000
committerAdam Tkac <atkac@redhat.com>2012-08-28 13:32:19 +0000
commitc6c4b7e4570d3ae7eab68445c99cc44b8a403de3 (patch)
tree3b6c1a9aa21f035789e18b5359bdae59564b59da
parentff8112326b8a074913dba6c2b313ad1729328bdd (diff)
downloadtigervnc-c6c4b7e4570d3ae7eab68445c99cc44b8a403de3.tar.gz
tigervnc-c6c4b7e4570d3ae7eab68445c99cc44b8a403de3.zip
Add support for X.Org 1.12.X
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4979 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r--unix/xserver/hw/vnc/vncExtInit.cc142
-rw-r--r--unix/xserver/hw/vnc/xf86vncModule.cc9
-rw-r--r--unix/xserver/hw/vnc/xorg-version.h2
-rw-r--r--unix/xserver112.patch91
4 files changed, 227 insertions, 17 deletions
diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc
index 7d865ed1..898d2f64 100644
--- a/unix/xserver/hw/vnc/vncExtInit.cc
+++ b/unix/xserver/hw/vnc/vncExtInit.cc
@@ -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);
}
diff --git a/unix/xserver/hw/vnc/xf86vncModule.cc b/unix/xserver/hw/vnc/xf86vncModule.cc
index 547ab06f..b1ab2756 100644
--- a/unix/xserver/hw/vnc/xf86vncModule.cc
+++ b/unix/xserver/hw/vnc/xf86vncModule.cc
@@ -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);
}
diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
index 3b6a689f..9a2db937 100644
--- a/unix/xserver/hw/vnc/xorg-version.h
+++ b/unix/xserver/hw/vnc/xorg-version.h
@@ -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
index 00000000..712889ce
--- /dev/null
+++ b/unix/xserver112.patch
@@ -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)