]> source.dussan.org Git - tigervnc.git/commitdiff
Updated to build against xorg-x11-server 1.16.0.
authorTim Waugh <twaugh@redhat.com>
Wed, 3 Sep 2014 11:38:15 +0000 (12:38 +0100)
committerTim Waugh <twaugh@redhat.com>
Wed, 3 Sep 2014 11:38:15 +0000 (12:38 +0100)
unix/xserver/hw/vnc/Input.cc
unix/xserver/hw/vnc/XserverDesktop.cc
unix/xserver/hw/vnc/vncExtInit.cc
unix/xserver/hw/vnc/vncHooks.cc
unix/xserver/hw/vnc/xf86vncModule.cc
unix/xserver/hw/vnc/xorg-version.h
unix/xserver/hw/vnc/xvnc.cc
unix/xserver115.patch [new file with mode: 0644]
unix/xserver116.patch [new file with mode: 0644]

index 4ecd81e9bc49ed0635a82569bb3ac733c0cb3d4b..16fb90070a1380953abb2f69f9200788c23089f2 100644 (file)
@@ -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)
index e5cc3dc135cfdf2bd1dac0f05b978ffbedf4156a..2f8872ff8d766899d31c2be67f027e5a1652986e 100644 (file)
@@ -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"
index 732fa69bc77af8bae487b3ac535e9663bbb0263f..35051617e860ca2aa86c43ab9d40ae43b46ceaef 100644 (file)
@@ -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");
index 946938724050fcafea354f14e139416481065d16..29de4c4c4850da4d08e2e2b98272ddec990cf5a1 100644 (file)
@@ -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);
 
index bb666ef29dd3eb78a601cce205c731e4499393a3..596d399a66eea6281b9f8a2932dabf71ab5e618a 100644 (file)
@@ -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)
index de5e9cb98934f8b3185c41f91baf812ebad3cd67..057c31e7d1105e51819d3c719dc426d9bcff5b56 100644 (file)
 #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
index 27bd3916dd8981da2ab21a3849f7f62841bf4a06..6ab3bb57b4e05507b7a4acb4ffce04c8afd9858d 100644 (file)
@@ -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 (file)
index 0000000..82b02c1
--- /dev/null
@@ -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 (file)
index 0000000..c2f3de4
--- /dev/null
@@ -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();