Add patches for use with xserver-1.19

- Rebuild against xserver-1.19
- Cleanup specfile a bit
This commit is contained in:
Hans de Goede 2016-10-03 15:36:20 +02:00
parent 1dd9a48e14
commit c3e0f5c47b
6 changed files with 488 additions and 243 deletions

View 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 &region);
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

View File

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

View File

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

View File

@ -1,11 +1,10 @@
Name: tigervnc Name: tigervnc
Version: 1.7.0 Version: 1.7.0
Release: 1%{?dist} Release: 2%{?dist}
Summary: A TigerVNC remote display system Summary: A TigerVNC remote display system
%global _hardened_build 1 %global _hardened_build 1
Group: User Interface/Desktops
License: GPLv2+ License: GPLv2+
URL: http://www.tigervnc.com URL: http://www.tigervnc.com
@ -13,7 +12,6 @@ Source0: %{name}-%{version}.tar.gz
Source1: vncserver.service Source1: vncserver.service
Source2: vncserver.sysconfig Source2: vncserver.sysconfig
Source3: 10-libvnc.conf Source3: 10-libvnc.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libX11-devel, automake, autoconf, libtool, gettext, gettext-autopoint BuildRequires: libX11-devel, automake, autoconf, libtool, gettext, gettext-autopoint
BuildRequires: libXext-devel, xorg-x11-server-source, libXi-devel 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 Provides: tightvnc = 1.5.0-0.15.20090204svn3586
Obsoletes: 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 Patch3: tigervnc-libvnc-os.patch
Patch7: tigervnc-manpages.patch Patch7: tigervnc-manpages.patch
Patch8: tigervnc-getmaster.patch Patch8: tigervnc-getmaster.patch
@ -52,7 +51,7 @@ Patch14: tigervnc-xstartup.patch
Patch18: tigervnc-utilize-system-crypto-policies.patch Patch18: tigervnc-utilize-system-crypto-policies.patch
# This is tigervnc-%%{version}/unix/xserver116.patch rebased on the latest xorg # This is tigervnc-%%{version}/unix/xserver116.patch rebased on the latest xorg
Patch100: tigervnc-xserver116-rebased.patch Patch100: tigervnc-xserver119.patch
%description %description
Virtual Network Computing (VNC) is a remote display system which Virtual Network Computing (VNC) is a remote display system which
@ -64,7 +63,6 @@ server.
%package server %package server
Summary: A TigerVNC server Summary: A TigerVNC server
Group: User Interface/X
Provides: vnc-server = 4.1.3-2, vnc-libs = 4.1.3-2 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 Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
Provides: tightvnc-server = 1.5.0-0.15.20090204svn3586 Provides: tightvnc-server = 1.5.0-0.15.20090204svn3586
@ -87,7 +85,6 @@ X session.
%package server-minimal %package server-minimal
Summary: A minimal installation of TigerVNC server Summary: A minimal installation of TigerVNC server
Group: User Interface/X
Requires(post): chkconfig Requires(post): chkconfig
Requires(preun):chkconfig Requires(preun):chkconfig
Requires(preun):initscripts Requires(preun):initscripts
@ -105,7 +102,6 @@ machine.
%ifnarch s390 s390x %ifnarch s390 s390x
%package server-module %package server-module
Summary: TigerVNC module to Xorg Summary: TigerVNC module to Xorg
Group: User Interface/X
Provides: vnc-server = 4.1.3-2, vnc-libs = 4.1.3-2 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 Obsoletes: vnc-server < 4.1.3-2, vnc-libs < 4.1.3-2
Provides: tightvnc-server-module = 1.5.0-0.15.20090204svn3586 Provides: tightvnc-server-module = 1.5.0-0.15.20090204svn3586
@ -120,7 +116,6 @@ to access the desktop on your machine.
%package server-applet %package server-applet
Summary: Java TigerVNC viewer applet for TigerVNC server Summary: Java TigerVNC viewer applet for TigerVNC server
Group: User Interface/X
Requires: tigervnc-server, java, jpackage-utils Requires: tigervnc-server, java, jpackage-utils
BuildArch: noarch BuildArch: noarch
@ -130,7 +125,6 @@ clients to use web browser when connect to the TigerVNC server.
%package license %package license
Summary: License of TigerVNC suite Summary: License of TigerVNC suite
Group: User Interface/X
BuildArch: noarch BuildArch: noarch
%description license %description license
@ -138,7 +132,6 @@ This package contains license of the TigerVNC suite
%package icons %package icons
Summary: Icons for TigerVNC viewer Summary: Icons for TigerVNC viewer
Group: User Interface/X
BuildArch: noarch BuildArch: noarch
%description icons %description icons
@ -146,7 +139,7 @@ This package contains icons for TigerVNC viewer
%prep %prep
%setup -q %setup -q
%patch1 -p1
%patch3 -p1 -b .libvnc-os %patch3 -p1 -b .libvnc-os
cp -r /usr/share/xorg-x11-server-source/* unix/xserver cp -r /usr/share/xorg-x11-server-source/* unix/xserver
@ -218,8 +211,7 @@ JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" make
popd popd
%install %install
rm -rf $RPM_BUILD_ROOT %make_install
make install DESTDIR=$RPM_BUILD_ROOT
rm -f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/{README.txt,LICENCE.TXT} rm -f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/{README.txt,LICENCE.TXT}
pushd unix/xserver/hw/vnc 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 install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/10-libvnc.conf
%endif %endif
%clean
rm -rf $RPM_BUILD_ROOT
%post %post
touch -c %{_datadir}/icons/hicolor touch -c %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then if [ -x %{_bindir}/gtk-update-icon-cache ]; then
@ -292,14 +281,12 @@ fi
%systemd_postun %systemd_postun
%files -f %{name}.lang %files -f %{name}.lang
%defattr(-,root,root,-)
%doc README.txt %doc README.txt
%{_bindir}/vncviewer %{_bindir}/vncviewer
%{_datadir}/applications/* %{_datadir}/applications/*
%{_mandir}/man1/vncviewer.1* %{_mandir}/man1/vncviewer.1*
%files server %files server
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/sysconfig/vncservers %config(noreplace) %{_sysconfdir}/sysconfig/vncservers
%{_unitdir}/vncserver@.service %{_unitdir}/vncserver@.service
%{_bindir}/x0vncserver %{_bindir}/x0vncserver
@ -308,7 +295,6 @@ fi
%{_mandir}/man1/x0vncserver.1* %{_mandir}/man1/x0vncserver.1*
%files server-minimal %files server-minimal
%defattr(-,root,root,-)
%{_bindir}/vncconfig %{_bindir}/vncconfig
%{_bindir}/vncpasswd %{_bindir}/vncpasswd
%{_bindir}/Xvnc %{_bindir}/Xvnc
@ -318,24 +304,26 @@ fi
%ifnarch s390 s390x %ifnarch s390 s390x
%files server-module %files server-module
%defattr(-,root,root,-)
%{_libdir}/xorg/modules/extensions/libvnc.so %{_libdir}/xorg/modules/extensions/libvnc.so
%config %{_sysconfdir}/X11/xorg.conf.d/10-libvnc.conf %config %{_sysconfdir}/X11/xorg.conf.d/10-libvnc.conf
%endif %endif
%files server-applet %files server-applet
%defattr(-,root,root,-)
%doc java/com/tigervnc/vncviewer/README %doc java/com/tigervnc/vncviewer/README
%{_datadir}/vnc/classes/* %{_datadir}/vnc/classes/*
%files license %files license
%doc LICENCE.TXT %license LICENCE.TXT
%files icons %files icons
%defattr(-,root,root,-)
%{_datadir}/icons/hicolor/*/apps/* %{_datadir}/icons/hicolor/*/apps/*
%changelog %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 * Mon Sep 12 2016 Jan Grulich <jgrulich@redhat.com> - 1.7.0-1
- Update to 1.7.0 - Update to 1.7.0

View File

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