Add patches for use with xserver-1.19
- Rebuild against xserver-1.19 - Cleanup specfile a bit
This commit is contained in:
parent
1dd9a48e14
commit
c3e0f5c47b
382
tigervnc-1.7.0-xserver119-support.patch
Normal file
382
tigervnc-1.7.0-xserver119-support.patch
Normal file
@ -0,0 +1,382 @@
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc tigervnc-1.7.0.new/unix/xserver/hw/vnc/XserverDesktop.cc
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/XserverDesktop.cc 2016-10-03 15:04:48.844035351 +0200
|
||||
@@ -89,6 +89,30 @@
|
||||
XserverDesktop* desktop;
|
||||
};
|
||||
|
||||
+#if XORG >= 119
|
||||
+extern "C" {
|
||||
+/*
|
||||
+ * xserver NotifyFd callbacks. Note we also expect write notifies to work,
|
||||
+ * which only works with xserver >= 1.19.
|
||||
+ */
|
||||
+#include "os.h"
|
||||
+
|
||||
+static void HandleListenFd(int fd, int xevents, void *data)
|
||||
+{
|
||||
+ XserverDesktop *desktop = (XserverDesktop *)data;
|
||||
+
|
||||
+ desktop->handleListenFd(fd);
|
||||
+}
|
||||
+
|
||||
+static void HandleSocketFd(int fd, int xevents, void *data)
|
||||
+{
|
||||
+ XserverDesktop *desktop = (XserverDesktop *)data;
|
||||
+
|
||||
+ desktop->handleSocketFd(fd, xevents);
|
||||
+}
|
||||
+
|
||||
+}
|
||||
+#endif
|
||||
|
||||
XserverDesktop::XserverDesktop(int screenIndex_,
|
||||
std::list<network::TcpListener*> listeners_,
|
||||
@@ -110,15 +134,35 @@
|
||||
|
||||
if (!httpListeners.empty ())
|
||||
httpServer = new FileHTTPServer(this);
|
||||
+
|
||||
+#if XORG >= 119
|
||||
+ for (std::list<TcpListener*>::iterator i = listeners.begin();
|
||||
+ i != listeners.end();
|
||||
+ i++) {
|
||||
+ SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);
|
||||
+ }
|
||||
+
|
||||
+ for (std::list<TcpListener*>::iterator i = httpListeners.begin();
|
||||
+ i != httpListeners.end();
|
||||
+ i++) {
|
||||
+ SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
XserverDesktop::~XserverDesktop()
|
||||
{
|
||||
while (!listeners.empty()) {
|
||||
+#if XORG >= 119
|
||||
+ RemoveNotifyFd(listeners.back()->getFd());
|
||||
+#endif
|
||||
delete listeners.back();
|
||||
listeners.pop_back();
|
||||
}
|
||||
while (!httpListeners.empty()) {
|
||||
+#if XORG >= 119
|
||||
+ RemoveNotifyFd(listeners.back()->getFd());
|
||||
+#endif
|
||||
delete httpListeners.back();
|
||||
httpListeners.pop_back();
|
||||
}
|
||||
@@ -388,6 +432,100 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if XORG >= 119
|
||||
+void XserverDesktop::handleListenFd(int fd)
|
||||
+{
|
||||
+ std::list<TcpListener*>::iterator i;
|
||||
+ SocketServer *fd_server = NULL;
|
||||
+ bool is_http = false;
|
||||
+
|
||||
+ for (i = listeners.begin(); i != listeners.end(); i++) {
|
||||
+ if ((*i)->getFd() == fd) {
|
||||
+ fd_server = server;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (httpServer && !fd_server) {
|
||||
+ for (i = httpListeners.begin(); i != httpListeners.end(); i++) {
|
||||
+ if ((*i)->getFd() == fd) {
|
||||
+ fd_server = httpServer;
|
||||
+ is_http = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (!fd_server) {
|
||||
+ vlog.error("XserverDesktop::handleListenFd: Error cannot find fd");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ Socket* sock = (*i)->accept();
|
||||
+ sock->outStream().setBlocking(false);
|
||||
+ vlog.debug("new %sclient, sock %d", is_http ? "http " : "", sock->getFd());
|
||||
+ fd_server->addSocket(sock);
|
||||
+ SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);
|
||||
+}
|
||||
+
|
||||
+void XserverDesktop::handleSocketFd(int fd, int xevents)
|
||||
+{
|
||||
+ std::list<Socket*> sockets;
|
||||
+ std::list<Socket*>::iterator i;
|
||||
+ SocketServer *fd_server = NULL;
|
||||
+ bool is_http = false;
|
||||
+
|
||||
+ server->getSockets(&sockets);
|
||||
+ for (i = sockets.begin(); i != sockets.end(); i++) {
|
||||
+ if ((*i)->getFd() == fd) {
|
||||
+ fd_server = server;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (httpServer && !fd_server) {
|
||||
+ httpServer->getSockets(&sockets);
|
||||
+ for (i = sockets.begin(); i != sockets.end(); i++) {
|
||||
+ if ((*i)->getFd() == fd) {
|
||||
+ fd_server = httpServer;
|
||||
+ is_http = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (!fd_server) {
|
||||
+ vlog.error("XserverDesktop::handleSocketFd: Error cannot find fd");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (xevents & X_NOTIFY_READ)
|
||||
+ fd_server->processSocketReadEvent(*i);
|
||||
+
|
||||
+ if (xevents & X_NOTIFY_WRITE)
|
||||
+ fd_server->processSocketWriteEvent(*i);
|
||||
+
|
||||
+ if ((*i)->isShutdown()) {
|
||||
+ vlog.debug("%sclient gone, sock %d", is_http ? "http " : "", fd);
|
||||
+ RemoveNotifyFd(fd);
|
||||
+ fd_server->removeSocket(*i);
|
||||
+ if (!is_http)
|
||||
+ vncClientGone(fd);
|
||||
+ delete (*i);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void XserverDesktop::blockHandler(int* timeout)
|
||||
+{
|
||||
+ // We don't have a good callback for when we can init input devices[1],
|
||||
+ // so we abuse the fact that this routine will be called first thing
|
||||
+ // once the dix is done initialising.
|
||||
+ // [1] Technically Xvnc has InitInput(), but libvnc.so has nothing.
|
||||
+ vncInitInputDevice();
|
||||
+
|
||||
+ int nextTimeout = server->checkTimeouts();
|
||||
+ if (nextTimeout > 0 && (*timeout == -1 || nextTimeout < *timeout))
|
||||
+ *timeout = nextTimeout;
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+
|
||||
void XserverDesktop::readBlockHandler(fd_set* fds, struct timeval ** timeout)
|
||||
{
|
||||
// We don't have a good callback for when we can init input devices[1],
|
||||
@@ -600,10 +738,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#endif
|
||||
+
|
||||
void XserverDesktop::addClient(Socket* sock, bool reverse)
|
||||
{
|
||||
vlog.debug("new client, sock %d reverse %d",sock->getFd(),reverse);
|
||||
server->addSocket(sock, reverse);
|
||||
+#if XORG >= 119
|
||||
+ SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);
|
||||
+#endif
|
||||
}
|
||||
|
||||
void XserverDesktop::disconnectClients()
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h tigervnc-1.7.0.new/unix/xserver/hw/vnc/XserverDesktop.h
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/XserverDesktop.h 2016-10-03 13:58:58.434844924 +0200
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <rfb/VNCServerST.h>
|
||||
#include <rdr/SubstitutingInStream.h>
|
||||
#include "Input.h"
|
||||
+#include "xorg-version.h"
|
||||
|
||||
namespace rfb {
|
||||
class VNCServerST;
|
||||
@@ -69,10 +70,16 @@
|
||||
const unsigned char *rgbaData);
|
||||
void add_changed(const rfb::Region ®ion);
|
||||
void add_copied(const rfb::Region &dest, const rfb::Point &delta);
|
||||
+#if XORG >= 119
|
||||
+ void handleListenFd(int fd);
|
||||
+ void handleSocketFd(int fd, int xevents);
|
||||
+ void blockHandler(int* timeout);
|
||||
+#else
|
||||
void readBlockHandler(fd_set* fds, struct timeval ** timeout);
|
||||
void readWakeupHandler(fd_set* fds, int nfds);
|
||||
void writeBlockHandler(fd_set* fds, struct timeval ** timeout);
|
||||
void writeWakeupHandler(fd_set* fds, int nfds);
|
||||
+#endif
|
||||
void addClient(network::Socket* sock, bool reverse);
|
||||
void disconnectClients();
|
||||
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncBlockHandler.c
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncBlockHandler.c 2016-10-03 14:06:30.461357037 +0200
|
||||
@@ -30,6 +30,23 @@
|
||||
|
||||
#include "vncExtInit.h"
|
||||
#include "vncBlockHandler.h"
|
||||
+#include "xorg-version.h"
|
||||
+
|
||||
+#if XORG >= 119
|
||||
+
|
||||
+static void vncBlockHandler(void* data, void* timeout)
|
||||
+{
|
||||
+ vncCallBlockHandlers(timeout);
|
||||
+}
|
||||
+
|
||||
+void vncRegisterBlockHandlers(void)
|
||||
+{
|
||||
+ if (!RegisterBlockAndWakeupHandlers(vncBlockHandler,
|
||||
+ (ServerWakeupHandlerProcPtr)NoopDDA, 0))
|
||||
+ FatalError("RegisterBlockAndWakeupHandlers() failed\n");
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
|
||||
static void vncBlockHandler(void * data, OSTimePtr t, void * readmask);
|
||||
static void vncWakeupHandler(void * data, int nfds, void * readmask);
|
||||
@@ -144,3 +161,5 @@
|
||||
|
||||
vncWriteWakeupHandler(ret, &fallbackFds);
|
||||
}
|
||||
+
|
||||
+#endif
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncExtInit.cc
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncExtInit.cc 2016-10-03 14:08:21.109727176 +0200
|
||||
@@ -241,6 +241,17 @@
|
||||
return (desktop[scrIdx] != NULL);
|
||||
}
|
||||
|
||||
+#if XORG >= 119
|
||||
+
|
||||
+void vncCallBlockHandlers(int* timeout)
|
||||
+{
|
||||
+ for (int scr = 0; scr < vncGetScreenCount(); scr++)
|
||||
+ if (desktop[scr])
|
||||
+ desktop[scr]->blockHandler(timeout);
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+
|
||||
void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout)
|
||||
{
|
||||
for (int scr = 0; scr < vncGetScreenCount(); scr++)
|
||||
@@ -269,6 +280,8 @@
|
||||
desktop[scr]->writeWakeupHandler(fds, nfds);
|
||||
}
|
||||
|
||||
+#endif
|
||||
+
|
||||
int vncGetAvoidShiftNumLock(void)
|
||||
{
|
||||
return (bool)avoidShiftNumLock;
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncExtInit.h
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncExtInit.h 2016-10-03 14:06:34.253369722 +0200
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/select.h>
|
||||
+#include "xorg-version.h"
|
||||
|
||||
// Only from C++
|
||||
#ifdef __cplusplus
|
||||
@@ -52,10 +53,14 @@
|
||||
void vncExtensionInit(void);
|
||||
int vncExtensionIsActive(int scrIdx);
|
||||
|
||||
+#if XORG >= 119
|
||||
+void vncCallBlockHandlers(int* timeout);
|
||||
+#else
|
||||
void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout);
|
||||
void vncCallReadWakeupHandlers(fd_set * fds, int nfds);
|
||||
void vncCallWriteBlockHandlers(fd_set * fds, struct timeval ** timeout);
|
||||
void vncCallWriteWakeupHandlers(fd_set * fds, int nfds);
|
||||
+#endif
|
||||
|
||||
int vncGetAvoidShiftNumLock(void);
|
||||
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncHooks.c
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/vncHooks.c 2016-10-03 13:25:54.469267290 +0200
|
||||
@@ -128,9 +128,11 @@
|
||||
#if XORG <= 112
|
||||
static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
|
||||
pointer pReadmask);
|
||||
-#else
|
||||
+#elif XORG <= 118
|
||||
static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout,
|
||||
void * pReadmask);
|
||||
+#else
|
||||
+static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout);
|
||||
#endif
|
||||
#ifdef RENDER
|
||||
static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
|
||||
@@ -716,9 +718,11 @@
|
||||
#if XORG <= 112
|
||||
static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
|
||||
pointer pReadmask)
|
||||
-#else
|
||||
+#elif XORG <= 118
|
||||
static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout,
|
||||
void * pReadmask)
|
||||
+#else
|
||||
+static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout)
|
||||
#endif
|
||||
{
|
||||
#if XORG <= 112
|
||||
@@ -731,8 +735,10 @@
|
||||
|
||||
#if XORG <= 112
|
||||
(*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
|
||||
-#else
|
||||
+#elif XORG <= 118
|
||||
(*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
|
||||
+#else
|
||||
+ (*pScreen->BlockHandler) (pScreen, pTimeout);
|
||||
#endif
|
||||
|
||||
vncHooksScreen->ignoreHooks--;
|
||||
@@ -1033,12 +1039,21 @@
|
||||
|
||||
// Unwrap and rewrap helpers
|
||||
|
||||
+#if XORG >= 116
|
||||
+#define GC_OP_PROLOGUE(pGC, name)\
|
||||
+ vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\
|
||||
+ const GCFuncs *oldFuncs = pGC->funcs;\
|
||||
+ pGC->funcs = pGCPriv->wrappedFuncs;\
|
||||
+ pGC->ops = pGCPriv->wrappedOps; \
|
||||
+ DBGPRINT((stderr,"vncHooks" #name " called\n"))
|
||||
+#else
|
||||
#define GC_OP_PROLOGUE(pGC, name)\
|
||||
vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\
|
||||
GCFuncs *oldFuncs = pGC->funcs;\
|
||||
pGC->funcs = pGCPriv->wrappedFuncs;\
|
||||
pGC->ops = pGCPriv->wrappedOps; \
|
||||
DBGPRINT((stderr,"vncHooks" #name " called\n"))
|
||||
+#endif
|
||||
|
||||
#define GC_OP_EPILOGUE(pGC)\
|
||||
pGCPriv->wrappedOps = pGC->ops;\
|
||||
diff -ur tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h tigervnc-1.7.0.new/unix/xserver/hw/vnc/xorg-version.h
|
||||
--- tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h 2016-09-08 12:31:18.000000000 +0200
|
||||
+++ tigervnc-1.7.0.new/unix/xserver/hw/vnc/xorg-version.h 2016-10-03 10:27:53.721116357 +0200
|
||||
@@ -50,8 +50,10 @@
|
||||
#define XORG 117
|
||||
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (18 * 100000) + (99 * 1000))
|
||||
#define XORG 118
|
||||
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (19 * 100000) + (99 * 1000))
|
||||
+#define XORG 119
|
||||
#else
|
||||
-#error "X.Org newer than 1.18 is not supported"
|
||||
+#error "X.Org newer than 1.18 is not supported"
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,137 +0,0 @@
|
||||
diff -up xorg-server-1.17.1/configure.ac.xserver116-rebased xorg-server-1.17.1/configure.ac
|
||||
--- xorg-server-1.17.1/configure.ac.xserver116-rebased 2015-02-10 22:43:52.000000000 +0000
|
||||
+++ xorg-server-1.17.1/configure.ac 2015-02-13 16:14:05.074515927 +0000
|
||||
@@ -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])
|
||||
@@ -1795,6 +1796,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 $DRI3_LIB $PRESENT_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
|
||||
|
||||
@@ -1830,6 +1835,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'
|
||||
@@ -2059,7 +2066,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])
|
||||
@@ -2599,6 +2605,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 xorg-server-1.17.1/hw/Makefile.am.xserver116-rebased xorg-server-1.17.1/hw/Makefile.am
|
||||
--- xorg-server-1.17.1/hw/Makefile.am.xserver116-rebased 2014-04-16 21:24:00.000000000 +0100
|
||||
+++ xorg-server-1.17.1/hw/Makefile.am 2015-02-13 16:14:05.131516821 +0000
|
||||
@@ -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 -up xorg-server-1.17.1/mi/miinitext.c.xserver116-rebased xorg-server-1.17.1/mi/miinitext.c
|
||||
--- xorg-server-1.17.1/mi/miinitext.c.xserver116-rebased 2015-01-17 23:42:52.000000000 +0000
|
||||
+++ xorg-server-1.17.1/mi/miinitext.c 2015-02-13 16:14:05.131516821 +0000
|
||||
@@ -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 *
|
||||
|
||||
/* 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 -up xorg-server-1.17.1/os/WaitFor.c.xserver116-rebased xorg-server-1.17.1/os/WaitFor.c
|
||||
--- xorg-server-1.17.1/os/WaitFor.c.xserver116-rebased 2015-01-26 18:40:30.000000000 +0000
|
||||
+++ xorg-server-1.17.1/os/WaitFor.c 2015-02-13 16:14:05.132516837 +0000
|
||||
@@ -125,6 +125,9 @@ static void DoTimer(OsTimerPtr timer, CA
|
||||
static void CheckAllTimers(void);
|
||||
static volatile 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,44 +0,0 @@
|
||||
diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/xorg-version.h.xserver117 tigervnc-1.4.2/unix/xserver/hw/vnc/xorg-version.h
|
||||
--- tigervnc-1.4.2/unix/xserver/hw/vnc/xorg-version.h.xserver117 2015-01-23 23:37:23.000000000 +0000
|
||||
+++ tigervnc-1.4.2/unix/xserver/hw/vnc/xorg-version.h 2015-02-13 17:35:29.847294663 +0000
|
||||
@@ -48,8 +48,10 @@
|
||||
#define XORG 115
|
||||
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (16 * 100000) + (99 * 1000))
|
||||
#define XORG 116
|
||||
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (17 * 100000) + (99 * 1000))
|
||||
+#define XORG 117
|
||||
#else
|
||||
-#error "X.Org newer than 1.16 is not supported"
|
||||
+#error "X.Org newer than 1.17 is not supported"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
diff -up tigervnc-1.4.2/unix/xserver/hw/vnc/xvnc.cc.xserver117 tigervnc-1.4.2/unix/xserver/hw/vnc/xvnc.cc
|
||||
--- tigervnc-1.4.2/unix/xserver/hw/vnc/xvnc.cc.xserver117 2015-01-23 23:37:23.000000000 +0000
|
||||
+++ tigervnc-1.4.2/unix/xserver/hw/vnc/xvnc.cc 2015-02-13 17:35:27.963265774 +0000
|
||||
@@ -717,9 +717,9 @@ vfbInstallColormap(ColormapPtr pmap)
|
||||
entries = pmap->pVisual->ColormapEntries;
|
||||
pVisual = pmap->pVisual;
|
||||
|
||||
- ppix = (Pixel *)xalloc(entries * sizeof(Pixel));
|
||||
- prgb = (xrgb *)xalloc(entries * sizeof(xrgb));
|
||||
- defs = (xColorItem *)xalloc(entries * sizeof(xColorItem));
|
||||
+ ppix = (Pixel *)calloc(entries, sizeof(Pixel));
|
||||
+ prgb = (xrgb *)calloc(entries, sizeof(xrgb));
|
||||
+ defs = (xColorItem *)calloc(entries, sizeof(xColorItem));
|
||||
|
||||
for (i = 0; i < entries; i++) ppix[i] = i;
|
||||
/* XXX truecolor */
|
||||
@@ -738,9 +738,9 @@ vfbInstallColormap(ColormapPtr pmap)
|
||||
}
|
||||
(*pmap->pScreen->StoreColors)(pmap, entries, defs);
|
||||
|
||||
- xfree(ppix);
|
||||
- xfree(prgb);
|
||||
- xfree(defs);
|
||||
+ free(ppix);
|
||||
+ free(prgb);
|
||||
+ free(defs);
|
||||
}
|
||||
}
|
||||
|
95
tigervnc-xserver119.patch
Normal file
95
tigervnc-xserver119.patch
Normal file
@ -0,0 +1,95 @@
|
||||
diff -up xserver/configure.ac.xserver116-rebased xserver/configure.ac
|
||||
--- xserver/configure.ac.xserver116-rebased 2016-09-29 13:14:45.595441590 +0200
|
||||
+++ xserver/configure.ac 2016-09-29 13:14:45.631442006 +0200
|
||||
@@ -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])
|
||||
@@ -1863,6 +1864,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 $DRI3_LIB $PRESENT_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
|
||||
|
||||
@@ -1898,6 +1903,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'
|
||||
@@ -2116,7 +2123,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])
|
||||
@@ -2691,6 +2697,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.xserver116-rebased xserver/hw/Makefile.am
|
||||
--- xserver/hw/Makefile.am.xserver116-rebased 2016-09-29 13:14:45.601441659 +0200
|
||||
+++ xserver/hw/Makefile.am 2016-09-29 13:14:45.631442006 +0200
|
||||
@@ -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 -up xserver/mi/miinitext.c.xserver116-rebased xserver/mi/miinitext.c
|
||||
--- xserver/mi/miinitext.c.xserver116-rebased 2016-09-29 13:14:45.618441855 +0200
|
||||
+++ xserver/mi/miinitext.c 2016-09-29 13:14:45.631442006 +0200
|
||||
@@ -114,6 +114,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.
|
||||
*/
|
||||
@@ -238,6 +242,9 @@ EnableDisableExtensionError(const char *
|
||||
|
||||
/* 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
|
||||
--- xserver/include/os.h~ 2016-10-03 09:07:29.000000000 +0200
|
||||
+++ xserver/include/os.h 2016-10-03 14:13:00.013654506 +0200
|
||||
@@ -621,7 +621,7 @@
|
||||
extern _X_EXPORT void
|
||||
LogClose(enum ExitCode error);
|
||||
extern _X_EXPORT Bool
|
||||
-LogSetParameter(LogParameter param, int value);
|
||||
+LogSetParameter(enum _LogParameter param, int value);
|
||||
extern _X_EXPORT void
|
||||
LogVWrite(int verb, const char *f, va_list args)
|
||||
_X_ATTRIBUTE_PRINTF(2, 0);
|
@ -1,11 +1,10 @@
|
||||
Name: tigervnc
|
||||
Version: 1.7.0
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: A TigerVNC remote display system
|
||||
|
||||
%global _hardened_build 1
|
||||
|
||||
Group: User Interface/Desktops
|
||||
License: GPLv2+
|
||||
URL: http://www.tigervnc.com
|
||||
|
||||
@ -13,7 +12,6 @@ Source0: %{name}-%{version}.tar.gz
|
||||
Source1: vncserver.service
|
||||
Source2: vncserver.sysconfig
|
||||
Source3: 10-libvnc.conf
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: libX11-devel, automake, autoconf, libtool, gettext, gettext-autopoint
|
||||
BuildRequires: libXext-devel, xorg-x11-server-source, libXi-devel
|
||||
@ -44,6 +42,7 @@ Obsoletes: vnc < 4.1.3-2, vnc-libs < 4.1.3-2
|
||||
Provides: tightvnc = 1.5.0-0.15.20090204svn3586
|
||||
Obsoletes: tightvnc < 1.5.0-0.15.20090204svn3586
|
||||
|
||||
Patch1: tigervnc-1.7.0-xserver119-support.patch
|
||||
Patch3: tigervnc-libvnc-os.patch
|
||||
Patch7: tigervnc-manpages.patch
|
||||
Patch8: tigervnc-getmaster.patch
|
||||
@ -52,7 +51,7 @@ Patch14: tigervnc-xstartup.patch
|
||||
Patch18: tigervnc-utilize-system-crypto-policies.patch
|
||||
|
||||
# This is tigervnc-%%{version}/unix/xserver116.patch rebased on the latest xorg
|
||||
Patch100: tigervnc-xserver116-rebased.patch
|
||||
Patch100: tigervnc-xserver119.patch
|
||||
|
||||
%description
|
||||
Virtual Network Computing (VNC) is a remote display system which
|
||||
@ -64,7 +63,6 @@ server.
|
||||
|
||||
%package server
|
||||
Summary: A TigerVNC server
|
||||
Group: User Interface/X
|
||||
Provides: vnc-server = 4.1.3-2, vnc-libs = 4.1.3-2
|
||||
Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
|
||||
Provides: tightvnc-server = 1.5.0-0.15.20090204svn3586
|
||||
@ -87,7 +85,6 @@ X session.
|
||||
|
||||
%package server-minimal
|
||||
Summary: A minimal installation of TigerVNC server
|
||||
Group: User Interface/X
|
||||
Requires(post): chkconfig
|
||||
Requires(preun):chkconfig
|
||||
Requires(preun):initscripts
|
||||
@ -105,7 +102,6 @@ machine.
|
||||
%ifnarch s390 s390x
|
||||
%package server-module
|
||||
Summary: TigerVNC module to Xorg
|
||||
Group: User Interface/X
|
||||
Provides: vnc-server = 4.1.3-2, vnc-libs = 4.1.3-2
|
||||
Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
|
||||
Provides: tightvnc-server-module = 1.5.0-0.15.20090204svn3586
|
||||
@ -120,7 +116,6 @@ to access the desktop on your machine.
|
||||
|
||||
%package server-applet
|
||||
Summary: Java TigerVNC viewer applet for TigerVNC server
|
||||
Group: User Interface/X
|
||||
Requires: tigervnc-server, java, jpackage-utils
|
||||
BuildArch: noarch
|
||||
|
||||
@ -130,7 +125,6 @@ clients to use web browser when connect to the TigerVNC server.
|
||||
|
||||
%package license
|
||||
Summary: License of TigerVNC suite
|
||||
Group: User Interface/X
|
||||
BuildArch: noarch
|
||||
|
||||
%description license
|
||||
@ -138,7 +132,6 @@ This package contains license of the TigerVNC suite
|
||||
|
||||
%package icons
|
||||
Summary: Icons for TigerVNC viewer
|
||||
Group: User Interface/X
|
||||
BuildArch: noarch
|
||||
|
||||
%description icons
|
||||
@ -146,7 +139,7 @@ This package contains icons for TigerVNC viewer
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%patch1 -p1
|
||||
%patch3 -p1 -b .libvnc-os
|
||||
|
||||
cp -r /usr/share/xorg-x11-server-source/* unix/xserver
|
||||
@ -218,8 +211,7 @@ JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" make
|
||||
popd
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
%make_install
|
||||
rm -f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/{README.txt,LICENCE.TXT}
|
||||
|
||||
pushd unix/xserver/hw/vnc
|
||||
@ -263,9 +255,6 @@ mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
|
||||
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/10-libvnc.conf
|
||||
%endif
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post
|
||||
touch -c %{_datadir}/icons/hicolor
|
||||
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
|
||||
@ -292,14 +281,12 @@ fi
|
||||
%systemd_postun
|
||||
|
||||
%files -f %{name}.lang
|
||||
%defattr(-,root,root,-)
|
||||
%doc README.txt
|
||||
%{_bindir}/vncviewer
|
||||
%{_datadir}/applications/*
|
||||
%{_mandir}/man1/vncviewer.1*
|
||||
|
||||
%files server
|
||||
%defattr(-,root,root,-)
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/vncservers
|
||||
%{_unitdir}/vncserver@.service
|
||||
%{_bindir}/x0vncserver
|
||||
@ -308,7 +295,6 @@ fi
|
||||
%{_mandir}/man1/x0vncserver.1*
|
||||
|
||||
%files server-minimal
|
||||
%defattr(-,root,root,-)
|
||||
%{_bindir}/vncconfig
|
||||
%{_bindir}/vncpasswd
|
||||
%{_bindir}/Xvnc
|
||||
@ -318,24 +304,26 @@ fi
|
||||
|
||||
%ifnarch s390 s390x
|
||||
%files server-module
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/xorg/modules/extensions/libvnc.so
|
||||
%config %{_sysconfdir}/X11/xorg.conf.d/10-libvnc.conf
|
||||
%endif
|
||||
|
||||
%files server-applet
|
||||
%defattr(-,root,root,-)
|
||||
%doc java/com/tigervnc/vncviewer/README
|
||||
%{_datadir}/vnc/classes/*
|
||||
|
||||
%files license
|
||||
%doc LICENCE.TXT
|
||||
%license LICENCE.TXT
|
||||
|
||||
%files icons
|
||||
%defattr(-,root,root,-)
|
||||
%{_datadir}/icons/hicolor/*/apps/*
|
||||
|
||||
%changelog
|
||||
* Mon Oct 3 2016 Hans de Goede <hdegoede@redhat.com> - 1.7.0-2
|
||||
- Add patches for use with xserver-1.19
|
||||
- Rebuild against xserver-1.19
|
||||
- Cleanup specfile a bit
|
||||
|
||||
* Mon Sep 12 2016 Jan Grulich <jgrulich@redhat.com> - 1.7.0-1
|
||||
- Update to 1.7.0
|
||||
|
||||
|
@ -1,39 +0,0 @@
|
||||
From 1f679da30a33f3ddad14bc6b2be0795160ae12b8 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 9 Apr 2015 10:19:13 -0400
|
||||
Subject: [PATCH] include: Fix endianness setup
|
||||
|
||||
Need to make sure X_{BIG,LITTLE}_ENDIAN actually get defined
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
include/dix-config.h.in | 1 +
|
||||
include/xorg-server.h.in | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
|
||||
index 1aa77a5..5e53c00 100644
|
||||
--- a/include/dix-config.h.in
|
||||
+++ b/include/dix-config.h.in
|
||||
@@ -499,6 +499,7 @@
|
||||
|
||||
/* byte order */
|
||||
#undef X_BYTE_ORDER
|
||||
+#include <X11/Xarch.h>
|
||||
|
||||
/* Listen on TCP socket */
|
||||
#undef LISTEN_TCP
|
||||
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
|
||||
index 4cb9487..de6462a 100644
|
||||
--- a/include/xorg-server.h.in
|
||||
+++ b/include/xorg-server.h.in
|
||||
@@ -233,5 +233,6 @@
|
||||
|
||||
/* byte order */
|
||||
#undef X_BYTE_ORDER
|
||||
+#include <X11/Xarch.h>
|
||||
|
||||
#endif /* _XORG_SERVER_H_ */
|
||||
--
|
||||
2.1.0
|
||||
|
Loading…
Reference in New Issue
Block a user