Browse Source

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
tags/v1.2.90
Adam Tkac 11 years ago
parent
commit
c6c4b7e457

+ 126
- 16
unix/xserver/hw/vnc/vncExtInit.cc View 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);
}

+ 8
- 1
unix/xserver/hw/vnc/xf86vncModule.cc View 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);
}

+ 2
- 0
unix/xserver/hw/vnc/xorg-version.h View 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

+ 91
- 0
unix/xserver112.patch View File

@@ -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)

Loading…
Cancel
Save