157 lines
5.3 KiB
Diff
157 lines
5.3 KiB
Diff
From 28f093e6987bd7eb631714933ae3cf1ede250380 Mon Sep 17 00:00:00 2001
|
|
From: Hans de Goede <hdegoede@redhat.com>
|
|
Date: Mon, 28 Apr 2014 15:54:54 +0200
|
|
Subject: [PATCH] tigervnc xserver 1.14 patch
|
|
|
|
---
|
|
configure.ac | 9 ++++++++-
|
|
hw/Makefile.am | 3 ++-
|
|
mi/miinitext.c | 7 +++++++
|
|
os/WaitFor.c | 19 ++++++++++++++++++-
|
|
4 files changed, 35 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 0c8b516..722dbc3 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -74,6 +74,7 @@ dnl forcing an entire recompile.x
|
|
AC_CONFIG_HEADERS(include/version-config.h)
|
|
|
|
AM_PROG_AS
|
|
+AC_PROG_CXX
|
|
AC_PROG_LN_S
|
|
LT_PREREQ([2.2])
|
|
LT_INIT([disable-static win32-dll])
|
|
@@ -1794,6 +1795,10 @@ if test "x$XVFB" = xyes; then
|
|
AC_SUBST([XVFB_SYS_LIBS])
|
|
fi
|
|
|
|
+dnl Xvnc DDX
|
|
+AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
|
|
+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
|
|
|
|
@@ -1829,6 +1834,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'
|
|
@@ -2050,7 +2057,6 @@ if test "x$XORG" = xyes; then
|
|
AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
|
|
AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
|
|
AC_DEFINE(XFree86Server, 1, [Building 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])
|
|
@@ -2584,6 +2590,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 --git a/hw/Makefile.am b/hw/Makefile.am
|
|
index 19895dc..b42fa6e 100644
|
|
--- a/hw/Makefile.am
|
|
+++ b/hw/Makefile.am
|
|
@@ -38,7 +38,8 @@ SUBDIRS = \
|
|
$(DMX_SUBDIRS) \
|
|
$(KDRIVE_SUBDIRS) \
|
|
$(XQUARTZ_SUBDIRS) \
|
|
- $(XWAYLAND_SUBDIRS)
|
|
+ $(XWAYLAND_SUBDIRS) \
|
|
+ vnc
|
|
|
|
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland
|
|
|
|
diff --git a/mi/miinitext.c b/mi/miinitext.c
|
|
index 1d90516..ace7dbf 100644
|
|
--- a/mi/miinitext.c
|
|
+++ b/mi/miinitext.c
|
|
@@ -111,6 +111,10 @@ SOFTWARE.
|
|
#include "micmap.h"
|
|
#include "globals.h"
|
|
|
|
+#ifdef TIGERVNC
|
|
+extern void vncExtensionInit(INITARGS);
|
|
+#endif
|
|
+
|
|
/* The following is only a small first step towards run-time
|
|
* configurable extensions.
|
|
*/
|
|
@@ -235,6 +239,9 @@ EnableDisableExtensionError(const char *name, Bool enable)
|
|
|
|
/* List of built-in (statically linked) extensions */
|
|
static const ExtensionModule staticExtensions[] = {
|
|
+#ifdef TIGERVNC
|
|
+ {vncExtensionInit, "VNC-EXTENSION", NULL},
|
|
+#endif
|
|
{GEExtensionInit, "Generic Event Extension", &noGEExtension},
|
|
{ShapeExtensionInit, "SHAPE", NULL},
|
|
#ifdef MITSHM
|
|
diff --git a/os/WaitFor.c b/os/WaitFor.c
|
|
index 3eb15b9..9235f20 100644
|
|
--- a/os/WaitFor.c
|
|
+++ b/os/WaitFor.c
|
|
@@ -125,6 +125,9 @@ static void DoTimer(OsTimerPtr timer, CARD32 now, OsTimerPtr *prev);
|
|
static void CheckAllTimers(void);
|
|
static OsTimerPtr timers = NULL;
|
|
|
|
+extern void vncWriteBlockHandler(fd_set *fds);
|
|
+extern void vncWriteWakeupHandler(int nfds, fd_set *fds);
|
|
+
|
|
/*****************
|
|
* WaitForSomething:
|
|
* Make the server suspend until there is
|
|
@@ -150,6 +153,7 @@ WaitForSomething(int *pClientsReady)
|
|
INT32 timeout = 0;
|
|
fd_set clientsReadable;
|
|
fd_set clientsWritable;
|
|
+ fd_set socketsWritable;
|
|
int curclient;
|
|
int selecterr;
|
|
static int nready;
|
|
@@ -212,6 +216,9 @@ WaitForSomething(int *pClientsReady)
|
|
XFD_COPYSET(&AllSockets, &LastSelectMask);
|
|
}
|
|
|
|
+ FD_ZERO(&socketsWritable);
|
|
+ vncWriteBlockHandler(&socketsWritable);
|
|
+
|
|
BlockHandler((void *) &wt, (void *) &LastSelectMask);
|
|
if (NewOutputPending)
|
|
FlushAllOutput();
|
|
@@ -223,10 +230,20 @@ WaitForSomething(int *pClientsReady)
|
|
i = Select(MaxClients, &LastSelectMask, &clientsWritable, NULL, wt);
|
|
}
|
|
else {
|
|
- i = Select(MaxClients, &LastSelectMask, NULL, NULL, wt);
|
|
+ if (AnyClientsWriteBlocked)
|
|
+ XFD_ORSET(&socketsWritable, &ClientsWriteBlocked, &socketsWritable);
|
|
+
|
|
+ if (XFD_ANYSET(&socketsWritable)) {
|
|
+ i = Select (MaxClients, &LastSelectMask, &socketsWritable, NULL, wt);
|
|
+ if (AnyClientsWriteBlocked)
|
|
+ XFD_ANDSET(&clientsWritable, &socketsWritable, &ClientsWriteBlocked);
|
|
+ } else {
|
|
+ i = Select (MaxClients, &LastSelectMask, NULL, NULL, wt);
|
|
+ }
|
|
}
|
|
selecterr = GetErrno();
|
|
WakeupHandler(i, (void *) &LastSelectMask);
|
|
+ vncWriteWakeupHandler(i, &socketsWritable);
|
|
if (i <= 0) { /* An error or timeout occurred */
|
|
if (dispatchException)
|
|
return 0;
|
|
--
|
|
1.9.0
|
|
|