From d822c36525891becf2ca1574b8610e14899c0186 Mon Sep 17 00:00:00 2001 From: Tim Waugh Date: Wed, 3 Sep 2014 12:38:15 +0100 Subject: [PATCH] Updated to build against xorg-x11-server 1.16.0. --- unix/xserver/hw/vnc/Input.cc | 2 +- unix/xserver/hw/vnc/XserverDesktop.cc | 2 +- unix/xserver/hw/vnc/vncExtInit.cc | 22 ++-- unix/xserver/hw/vnc/vncHooks.cc | 26 ++--- unix/xserver/hw/vnc/xf86vncModule.cc | 8 +- unix/xserver/hw/vnc/xorg-version.h | 6 +- unix/xserver/hw/vnc/xvnc.cc | 8 +- unix/xserver115.patch | 145 ++++++++++++++++++++++++++ unix/xserver116.patch | 115 ++++++++++++++++++++ 9 files changed, 299 insertions(+), 35 deletions(-) create mode 100644 unix/xserver115.patch create mode 100644 unix/xserver116.patch diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc index 4ecd81e9..16fb9007 100644 --- a/unix/xserver/hw/vnc/Input.cc +++ b/unix/xserver/hw/vnc/Input.cc @@ -272,7 +272,7 @@ int InputDevice::pointerProc(DeviceIntPtr pDevice, int onoff) return Success; } -static void keyboardBell(int percent, DeviceIntPtr device, pointer ctrl, +static void keyboardBell(int percent, DeviceIntPtr device, void * ctrl, int class_) { if (percent > 0) diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc index e5cc3dc1..2f8872ff 100644 --- a/unix/xserver/hw/vnc/XserverDesktop.cc +++ b/unix/xserver/hw/vnc/XserverDesktop.cc @@ -49,7 +49,7 @@ extern "C" { #define public c_public #define class c_class -extern char *display; +extern const char *display; #ifdef RANDR #include "randrstr.h" diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc index 732fa69b..35051617 100644 --- a/unix/xserver/hw/vnc/vncExtInit.cc +++ b/unix/xserver/hw/vnc/vncExtInit.cc @@ -65,18 +65,18 @@ extern "C" { extern void vncExtensionInit(); static void vncResetProc(ExtensionEntry* extEntry); - static void vncBlockHandler(pointer data, OSTimePtr t, pointer readmask); - static void vncWakeupHandler(pointer data, int nfds, pointer readmask); + static void vncBlockHandler(void * data, OSTimePtr t, void * readmask); + static void vncWakeupHandler(void * data, int nfds, void * readmask); void vncWriteBlockHandler(fd_set *fds); void vncWriteWakeupHandler(int nfds, fd_set *fds); - static void vncClientStateChange(CallbackListPtr*, pointer, pointer); + static void vncClientStateChange(CallbackListPtr*, void *, void *); static void SendSelectionChangeEvent(Atom selection); static int ProcVncExtDispatch(ClientPtr client); static int SProcVncExtDispatch(ClientPtr client); - static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, - pointer args); + static void vncSelectionCallback(CallbackListPtr *callbacks, void * data, + void * args); - extern char *display; + extern const char *display; extern char *listenaddr; } @@ -284,7 +284,7 @@ static void vncResetProc(ExtensionEntry* extEntry) { } -static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args) +static void vncSelectionCallback(CallbackListPtr *callbacks, void * data, void * args) { SelectionInfoRec *info = (SelectionInfoRec *) args; Selection *selection = info->selection; @@ -301,7 +301,7 @@ static void vncWriteWakeupHandlerFallback(); // selections have changed, and if so, notify any interested X clients. // -static void vncBlockHandler(pointer data, OSTimePtr timeout, pointer readmask) +static void vncBlockHandler(void * data, OSTimePtr timeout, void * readmask) { fd_set* fds = (fd_set*)readmask; @@ -312,7 +312,7 @@ static void vncBlockHandler(pointer data, OSTimePtr timeout, pointer readmask) desktop[scr]->blockHandler(fds, timeout); } -static void vncWakeupHandler(pointer data, int nfds, pointer readmask) +static void vncWakeupHandler(void * data, int nfds, void * readmask) { fd_set* fds = (fd_set*)readmask; @@ -402,7 +402,7 @@ static void vncWriteWakeupHandlerFallback() vncWriteWakeupHandler(ret, &fallbackFds); } -static void vncClientStateChange(CallbackListPtr*, pointer, pointer p) +static void vncClientStateChange(CallbackListPtr*, void *, void * p) { ClientPtr client = ((NewClientInfoRec*)p)->client; if (client->clientState == ClientStateGone) { @@ -468,7 +468,7 @@ void vncClientCutText(const char* str, int len) static CARD32 queryConnectTimerCallback(OsTimerPtr timer, - CARD32 now, pointer arg) + CARD32 now, void * arg) { if (queryConnectTimeout) queryConnectDesktop->approveConnection(queryConnectId, false, "The attempt to prompt the user to accept the connection failed"); diff --git a/unix/xserver/hw/vnc/vncHooks.cc b/unix/xserver/hw/vnc/vncHooks.cc index 94693872..29de4c4c 100644 --- a/unix/xserver/hw/vnc/vncHooks.cc +++ b/unix/xserver/hw/vnc/vncHooks.cc @@ -89,8 +89,8 @@ typedef struct { } vncHooksScreenRec, *vncHooksScreenPtr; typedef struct { - GCFuncs *wrappedFuncs; - GCOps *wrappedOps; + const GCFuncs *wrappedFuncs; + const GCOps *wrappedOps; } vncHooksGCRec, *vncHooksGCPtr; #if XORG == 15 @@ -139,8 +139,8 @@ static Bool vncHooksDisplayCursor( static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask); #else -static void vncHooksBlockHandler(ScreenPtr pScreen, pointer pTimeout, - pointer pReadmask); +static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout, + void * pReadmask); #endif #ifdef RENDER static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, @@ -169,7 +169,7 @@ static void vncHooksValidateGC(GCPtr pGC, unsigned long changes, static void vncHooksChangeGC(GCPtr pGC, unsigned long mask); static void vncHooksCopyGC(GCPtr src, unsigned long mask, GCPtr dst); static void vncHooksDestroyGC(GCPtr pGC); -static void vncHooksChangeClip(GCPtr pGC, int type, pointer pValue,int nrects); +static void vncHooksChangeClip(GCPtr pGC, int type, void * pValue,int nrects); static void vncHooksDestroyClip(GCPtr pGC); static void vncHooksCopyClip(GCPtr dst, GCPtr src); @@ -221,10 +221,10 @@ static void vncHooksImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short *chars); static void vncHooksImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, - CharInfoPtr *ppci, pointer pglyphBase); + CharInfoPtr *ppci, void * pglyphBase); static void vncHooksPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, - CharInfoPtr *ppci, pointer pglyphBase); + CharInfoPtr *ppci, void * pglyphBase); static void vncHooksPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable, int w, int h, int x, int y); @@ -540,8 +540,8 @@ static Bool vncHooksDisplayCursor( static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) #else -static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout, - pointer pReadmask) +static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout, + void * pReadmask) #endif { #if XORG <= 112 @@ -876,7 +876,7 @@ static void vncHooksDestroyGC(GCPtr pGC) { GCFuncUnwrapper u(pGC); (*pGC->funcs->DestroyGC) (pGC); } -static void vncHooksChangeClip(GCPtr pGC, int type, pointer pValue, int nrects) +static void vncHooksChangeClip(GCPtr pGC, int type, void * pValue, int nrects) { GCFuncUnwrapper u(pGC); (*pGC->funcs->ChangeClip) (pGC, type, pValue, nrects); @@ -916,7 +916,7 @@ public: } GCPtr pGC; vncHooksGCPtr vncHooksGC; - GCFuncs* oldFuncs; + const GCFuncs* oldFuncs; ScreenPtr pScreen; }; @@ -1755,7 +1755,7 @@ static void vncHooksImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, static void vncHooksImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, - CharInfoPtr *ppci, pointer pglyphBase) + CharInfoPtr *ppci, void * pglyphBase) { GC_OP_UNWRAPPER(pDrawable, pGC, ImageGlyphBlt); @@ -1781,7 +1781,7 @@ static void vncHooksImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, static void vncHooksPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, - CharInfoPtr *ppci, pointer pglyphBase) + CharInfoPtr *ppci, void * pglyphBase) { GC_OP_UNWRAPPER(pDrawable, pGC, PolyGlyphBlt); diff --git a/unix/xserver/hw/vnc/xf86vncModule.cc b/unix/xserver/hw/vnc/xf86vncModule.cc index bb666ef2..596d399a 100644 --- a/unix/xserver/hw/vnc/xf86vncModule.cc +++ b/unix/xserver/hw/vnc/xf86vncModule.cc @@ -81,11 +81,11 @@ static XF86ModuleVersionInfo vncVersRec = _X_EXPORT XF86ModuleData vncModuleData = { &vncVersRec, vncSetup, NULL }; -static pointer -vncSetup(pointer module, pointer opts, int *errmaj, int *errmin) { - LoadExtension(&vncExt, FALSE); +static void * +vncSetup(void * module, void * opts, int *errmaj, int *errmin) { + LoadExtensionList(&vncExt, 1, FALSE); /* Need a non-NULL return value to indicate success */ - return (pointer)1; + return (void *)1; } static void vncExtensionInitWithParams(INITARGS) diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h index de5e9cb9..057c31e7 100644 --- a/unix/xserver/hw/vnc/xorg-version.h +++ b/unix/xserver/hw/vnc/xorg-version.h @@ -44,8 +44,12 @@ #define XORG 113 #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (14 * 100000) + (99 * 1000)) #define XORG 114 +#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (15 * 100000) + (99 * 1000)) +#define XORG 115 +#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (16 * 100000) + (99 * 1000)) +#define XORG 116 #else -#error "X.Org newer than 1.14 is not supported" +#error "X.Org newer than 1.16 is not supported" #endif #endif diff --git a/unix/xserver/hw/vnc/xvnc.cc b/unix/xserver/hw/vnc/xvnc.cc index 27bd3916..6ab3bb57 100644 --- a/unix/xserver/hw/vnc/xvnc.cc +++ b/unix/xserver/hw/vnc/xvnc.cc @@ -103,7 +103,7 @@ extern "C" { "See http://www.tigervnc.org for information on TigerVNC.\n") -extern char *display; +extern const char *display; extern int monitorResolution; #define VFB_DEFAULT_WIDTH 1024 @@ -762,7 +762,7 @@ vfbUninstallColormap(ColormapPtr pmap) curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, RT_COLORMAP); #else - dixLookupResourceByType((pointer *) &curpmap, pmap->pScreen->defColormap, + dixLookupResourceByType((void * *) &curpmap, pmap->pScreen->defColormap, RT_COLORMAP, serverClient, DixUnknownAccess); #endif (*pmap->pScreen->InstallColormap)(curpmap); @@ -1597,7 +1597,7 @@ vfbScreenInit(ScreenPtr pScreen, int argc, char **argv) } /* end vfbScreenInit */ -static void vfbClientStateChange(CallbackListPtr*, pointer, pointer) { +static void vfbClientStateChange(CallbackListPtr*, void *, void *) { dispatchException &= ~DE_RESET; } @@ -1625,7 +1625,7 @@ InitOutput(ScreenInfo *screenInfo, int argc, char **argv) #if XORG >= 113 #ifdef GLXEXT if (serverGeneration == 1) - LoadExtension(&glxExt, TRUE); + LoadExtensionList(&glxExt, 1, TRUE); #endif #endif diff --git a/unix/xserver115.patch b/unix/xserver115.patch new file mode 100644 index 00000000..82b02c13 --- /dev/null +++ b/unix/xserver115.patch @@ -0,0 +1,145 @@ +diff -up xserver/configure.ac.vnc xserver/configure.ac +--- xserver/configure.ac.vnc 2013-04-09 16:35:38.000000000 +0200 ++++ xserver/configure.ac 2013-04-09 18:16:31.000000000 +0200 +@@ -72,6 +72,7 @@ dnl forcing an entire recompile.x + AC_CONFIG_HEADERS(include/version-config.h) + + AM_PROG_AS ++AC_PROG_CXX + AC_PROG_LN_S + AC_LIBTOOL_WIN32_DLL + AC_DISABLE_STATIC +@@ -1028,7 +1029,6 @@ fi + if test "x$WAYLAND" = xyes; then + PKG_CHECK_MODULES(XWAYLAND, $WAYLAND_MODULES) + AC_DEFINE(XORG_WAYLAND, 1, [Support wayland mode]) +- WAYLAND_SCANNER_RULES(['$(top_srcdir)/hw/xfree86/xwayland']) + fi + AM_CONDITIONAL(WAYLAND, [test "x$WAYLAND" = xyes]) + +@@ -1573,6 +1573,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 + +@@ -1608,6 +1612,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' +@@ -1827,7 +1833,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]) +@@ -2292,6 +2297,7 @@ hw/dmx/Makefile + hw/dmx/man/Makefile + hw/vfb/Makefile + hw/vfb/man/Makefile ++hw/vnc/Makefile + hw/xnest/Makefile + hw/xnest/man/Makefile + hw/xwin/Makefile +diff -up xserver/hw/Makefile.am.vnc xserver/hw/Makefile.am +--- xserver/hw/Makefile.am.vnc 2013-04-09 16:36:46.000000000 +0200 ++++ xserver/hw/Makefile.am 2013-04-09 18:16:31.000000000 +0200 +@@ -33,7 +33,8 @@ SUBDIRS = \ + $(XNEST_SUBDIRS) \ + $(DMX_SUBDIRS) \ + $(KDRIVE_SUBDIRS) \ +- $(XQUARTZ_SUBDIRS) ++ $(XQUARTZ_SUBDIRS) \ ++ vnc + + DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive + +diff -up xserver/mi/miinitext.c.vnc xserver/mi/miinitext.c +--- xserver/mi/miinitext.c.vnc 2013-04-09 16:37:21.000000000 +0200 ++++ xserver/mi/miinitext.c 2013-04-09 18:16:31.000000000 +0200 +@@ -112,6 +112,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 ExtensionModule staticExtensions[] = { ++#ifdef TIGERVNC ++ {vncExtensionInit, "VNC-EXTENSION", NULL}, ++#endif + {GEExtensionInit, "Generic Event Extension", &noGEExtension}, + {ShapeExtensionInit, "SHAPE", NULL}, + #ifdef MITSHM +diff -up xserver/os/WaitFor.c.vnc xserver/os/WaitFor.c +--- xserver/os/WaitFor.c.vnc 2013-04-10 14:51:13.000000000 +0200 ++++ xserver/os/WaitFor.c 2013-04-10 14:55:40.000000000 +0200 +@@ -124,6 +124,9 @@ static void DoTimer(OsTimerPtr timer, CA + 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 +@@ -149,6 +152,7 @@ WaitForSomething(int *pClientsReady) + INT32 timeout = 0; + fd_set clientsReadable; + fd_set clientsWritable; ++ fd_set socketsWritable; + int curclient; + int selecterr; + static int nready; +@@ -207,6 +211,9 @@ WaitForSomething(int *pClientsReady) + XFD_COPYSET(&AllSockets, &LastSelectMask); + } + ++ FD_ZERO(&socketsWritable); ++ vncWriteBlockHandler(&socketsWritable); ++ + BlockHandler((pointer) &wt, (pointer) &LastSelectMask); + if (NewOutputPending) + FlushAllOutput(); +@@ -218,10 +225,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, (pointer) &LastSelectMask); ++ vncWriteWakeupHandler(i, &socketsWritable); + if (i <= 0) { /* An error or timeout occurred */ + if (dispatchException) + return 0; diff --git a/unix/xserver116.patch b/unix/xserver116.patch new file mode 100644 index 00000000..c2f3de49 --- /dev/null +++ b/unix/xserver116.patch @@ -0,0 +1,115 @@ +diff -up xorg-server-1.16.0/configure.ac.vnc xorg-server-1.16.0/configure.ac +--- xorg-server-1.16.0/configure.ac.vnc 2014-07-17 08:00:51.000000000 +0100 ++++ xorg-server-1.16.0/configure.ac 2014-09-03 10:21:49.506109235 +0100 +@@ -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 $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' +@@ -2051,7 +2058,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]) +@@ -2589,6 +2595,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.16.0/hw/Makefile.am.vnc xorg-server-1.16.0/hw/Makefile.am +--- xorg-server-1.16.0/hw/Makefile.am.vnc 2014-04-16 21:24:00.000000000 +0100 ++++ xorg-server-1.16.0/hw/Makefile.am 2014-09-03 10:21:49.507109234 +0100 +@@ -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.16.0/mi/miinitext.c.vnc xorg-server-1.16.0/mi/miinitext.c +--- xorg-server-1.16.0/mi/miinitext.c.vnc 2014-04-16 21:24:00.000000000 +0100 ++++ xorg-server-1.16.0/mi/miinitext.c 2014-09-03 10:21:49.508109234 +0100 +@@ -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.16.0/os/WaitFor.c.vnc xorg-server-1.16.0/os/WaitFor.c +--- xorg-server-1.16.0/os/WaitFor.c.vnc 2014-02-05 03:08:57.000000000 +0000 ++++ xorg-server-1.16.0/os/WaitFor.c 2014-09-03 10:21:49.508109234 +0100 +@@ -125,6 +125,9 @@ static void DoTimer(OsTimerPtr timer, CA + 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(); -- 2.39.5