diff --git a/unix/xserver114.patch b/unix/xserver114.patch
index 80dd6a2..944bc4a 100644
--- a/unix/xserver114.patch
+++ b/unix/xserver114.patch
@@ -1,6 +1,6 @@
-diff -up xorg-server-20130109/configure.ac.vnc xorg-server-20130109/configure.ac
---- xorg-server-20130109/configure.ac.vnc	2013-01-24 13:01:31.013267503 +0100
-+++ xorg-server-20130109/configure.ac	2013-01-24 13:08:43.283941751 +0100
+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)
  
@@ -29,7 +29,7 @@
  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'
-@@ -1826,7 +1833,6 @@ if test "x$XORG" = xyes; then
+@@ -1827,7 +1834,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])
@@ -37,7 +37,7 @@
  	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])
-@@ -2291,6 +2297,7 @@ hw/dmx/Makefile
+@@ -2292,6 +2298,7 @@ hw/dmx/Makefile
  hw/dmx/man/Makefile
  hw/vfb/Makefile
  hw/vfb/man/Makefile
@@ -45,9 +45,9 @@
  hw/xnest/Makefile
  hw/xnest/man/Makefile
  hw/xwin/Makefile
-diff -up xorg-server-20130109/hw/Makefile.am.vnc xorg-server-20130109/hw/Makefile.am
---- xorg-server-20130109/hw/Makefile.am.vnc	2013-01-10 06:06:16.000000000 +0100
-+++ xorg-server-20130109/hw/Makefile.am	2013-01-24 13:08:43.283941751 +0100
+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)		\
@@ -58,9 +58,9 @@
  
  DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
  
-diff -up xorg-server-20130109/mi/miinitext.c.vnc xorg-server-20130109/mi/miinitext.c
---- xorg-server-20130109/mi/miinitext.c.vnc	2013-01-10 06:06:16.000000000 +0100
-+++ xorg-server-20130109/mi/miinitext.c	2013-01-24 13:08:43.283941751 +0100
+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"
@@ -82,3 +82,56 @@
  };
  
  static ExtensionModule *ExtensionModuleList = NULL;
+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;
