diff --git a/tigervnc-1.7.0-xserver119-support.patch b/tigervnc-1.7.0-xserver119-support.patch new file mode 100644 index 0000000..f45e9c3 --- /dev/null +++ b/tigervnc-1.7.0-xserver119-support.patch @@ -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 listeners_, +@@ -110,15 +134,35 @@ + + if (!httpListeners.empty ()) + httpServer = new FileHTTPServer(this); ++ ++#if XORG >= 119 ++ for (std::list::iterator i = listeners.begin(); ++ i != listeners.end(); ++ i++) { ++ SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this); ++ } ++ ++ for (std::list::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::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 sockets; ++ std::list::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 + #include + #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 + #include + #include ++#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 diff --git a/tigervnc-xserver116-rebased.patch b/tigervnc-xserver116-rebased.patch deleted file mode 100644 index 5f5a73c..0000000 --- a/tigervnc-xserver116-rebased.patch +++ /dev/null @@ -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; diff --git a/tigervnc-xserver117.patch b/tigervnc-xserver117.patch deleted file mode 100644 index 77f813b..0000000 --- a/tigervnc-xserver117.patch +++ /dev/null @@ -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); - } - } - diff --git a/tigervnc-xserver119.patch b/tigervnc-xserver119.patch new file mode 100644 index 0000000..614f104 --- /dev/null +++ b/tigervnc-xserver119.patch @@ -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); diff --git a/tigervnc.spec b/tigervnc.spec index 76e2584..7c3dc6a 100644 --- a/tigervnc.spec +++ b/tigervnc.spec @@ -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 - 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 - 1.7.0-1 - Update to 1.7.0 diff --git a/xorg-x11-server-byte-order.patch b/xorg-x11-server-byte-order.patch deleted file mode 100644 index 1d9a542..0000000 --- a/xorg-x11-server-byte-order.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 1f679da30a33f3ddad14bc6b2be0795160ae12b8 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -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 ---- - 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 - - /* 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 - - #endif /* _XORG_SERVER_H_ */ --- -2.1.0 -