Date: Monday, February 16, 2015 @ 11:22:12 Author: spupykin Revision: 127789
upgpkg: tigervnc 1.4.2-1 upd Added: tigervnc/trunk/xorg117.patch Modified: tigervnc/trunk/PKGBUILD Deleted: tigervnc/trunk/xorg116.patch tigervnc/trunk/xserver116.patch ------------------+ PKGBUILD | 14 +- xorg116.patch | 285 ----------------------------------------------------- xorg117.patch | 44 ++++++++ xserver116.patch | 137 ------------------------- 4 files changed, 51 insertions(+), 429 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-02-16 10:22:09 UTC (rev 127788) +++ PKGBUILD 2015-02-16 10:22:12 UTC (rev 127789) @@ -2,9 +2,9 @@ # Maintainer: Uroš Vampl <mobile.leecher at gmail dot com> pkgname=tigervnc -pkgver=1.4.1 +pkgver=1.4.2 pkgrel=1 -_xorgver=1.16.2.901 +_xorgver=1.17.1 pkgdesc="Suite of VNC servers and clients. Based on the VNC 4 branch of TightVNC." arch=('i686' 'x86_64') url="http://www.tigervnc.org" @@ -25,14 +25,14 @@ vncviewer.desktop gethomedir.patch getmaster.patch - compile_fix.patch) -md5sums=('b7ca7852d0477d74e932724c5197b0d6' - '82cbcf6755787962e943d8e23495358d' + xorg117.patch) +md5sums=('93b935487d0ec33341f079bc402df6b1' + '5986510d59e394a50126a8e2833e79d3' '87678d73cc7c3fcd12797da43a0d061e' 'b200d83c60e80c6f9693ea19a2d9f5b0' '22f1523a0eca56ad79cfabd0db6e2cf6' 'e056a2502dfe0cb3b02e08cab689482f' - '557f978305b46b880dacd07461ad8db9') + 'c2d3ba5ef3fc1bc2c11aff178c024eef') prepare() { cd ${srcdir}/${pkgname}-${pkgver} @@ -39,7 +39,7 @@ patch -Np1 -i ${srcdir}/gethomedir.patch patch -Np1 -i ${srcdir}/getmaster.patch -# patch -Np1 -i ${srcdir}/compile_fix.patch + patch -Np1 -i ${srcdir}/xorg117.patch sed -i 's/iconic/nowin/' unix/vncserver cd unix/xserver Deleted: xorg116.patch =================================================================== --- xorg116.patch 2015-02-16 10:22:09 UTC (rev 127788) +++ xorg116.patch 2015-02-16 10:22:12 UTC (rev 127789) @@ -1,285 +0,0 @@ -diff -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/Input.cc tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/Input.cc 2013-05-30 16:53:40.000000000 +0200 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/Input.cc 2014-07-19 00:36:53.722520543 +0200 -@@ -262,7 +262,7 @@ - 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 -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/vncExtInit.cc tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/vncExtInit.cc 2013-07-01 14:48:31.000000000 +0200 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/vncExtInit.cc 2014-07-19 00:36:53.724520543 +0200 -@@ -65,18 +65,18 @@ - - 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; - } - -@@ -285,7 +285,7 @@ - { - } - --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; -@@ -302,7 +302,7 @@ - // 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; - -@@ -313,7 +313,7 @@ - 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; - -@@ -403,7 +403,7 @@ - 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) { -@@ -469,7 +469,7 @@ - - - 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 -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/vncHooks.cc tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/vncHooks.cc 2013-05-22 14:57:16.000000000 +0200 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/vncHooks.cc 2014-07-19 00:36:53.725520543 +0200 -@@ -91,8 +91,8 @@ - } vncHooksScreenRec, *vncHooksScreenPtr; - - typedef struct { -- GCFuncs *wrappedFuncs; -- GCOps *wrappedOps; -+ const GCFuncs *wrappedFuncs; -+ const GCOps *wrappedOps; - } vncHooksGCRec, *vncHooksGCPtr; - - #if XORG == 15 -@@ -141,11 +141,11 @@ - #endif - ScreenPtr pScreen, CursorPtr cursor); - #if XORG < 112 --static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout, -- pointer pReadmask); -+static void vncHooksBlockHandler(int i, void * blockData, void * pTimeout, -+ void * 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, -@@ -174,7 +174,7 @@ - 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); - -@@ -226,10 +226,10 @@ - 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); -@@ -575,11 +575,11 @@ - // these are just drawing the cursor. - - #if XORG < 112 --static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout, -- pointer pReadmask) -+static void vncHooksBlockHandler(int i, void * blockData, void * pTimeout, -+ void * pReadmask) - #else --static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout, -- pointer pReadmask) -+static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout, -+ void * pReadmask) - #endif - { - #if XORG < 112 -@@ -914,7 +914,7 @@ - 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); -@@ -954,7 +954,7 @@ - } - GCPtr pGC; - vncHooksGCPtr vncHooksGC; -- GCFuncs* oldFuncs; -+ const GCFuncs* oldFuncs; - ScreenPtr pScreen; - }; - -@@ -1793,7 +1793,7 @@ - - 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); - -@@ -1819,7 +1819,7 @@ - - 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 -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xf86vncModule.cc tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xf86vncModule.cc 2013-03-14 18:52:53.000000000 +0100 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/xf86vncModule.cc 2014-07-19 00:36:53.725520543 +0200 -@@ -81,11 +81,11 @@ - - _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 -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xorg-version.h tigervnc-1.3.1/unix/xserver/hw/vnc/xorg-version.h ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xorg-version.h 2013-02-19 14:51:29.000000000 +0100 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/xorg-version.h 2014-07-19 00:36:50.530520710 +0200 -@@ -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 -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/XserverDesktop.cc tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/XserverDesktop.cc 2013-05-22 14:56:25.000000000 +0200 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/XserverDesktop.cc 2014-07-19 00:36:53.723520543 +0200 -@@ -48,7 +48,7 @@ - #define public c_public - #define class c_class - --extern char *display; -+extern const char *display; - - #include "colormapst.h" - #ifdef RANDR -@@ -174,7 +174,7 @@ - { - pScreen = pScreen_; - int i; -- pointer retval; -+ void * retval; - - #if XORG >= 17 - #define dixLookupResource dixLookupResourceByType -diff -ur tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xvnc.cc tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc ---- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/xvnc.cc 2014-03-19 13:11:09.000000000 +0100 -+++ tigervnc-1.3.1/unix/xserver/hw/vnc/xvnc.cc 2014-07-19 00:36:53.726520543 +0200 -@@ -103,7 +103,7 @@ - "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 @@ - 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 @@ - } /* end vfbScreenInit */ - - --static void vfbClientStateChange(CallbackListPtr*, pointer, pointer) { -+static void vfbClientStateChange(CallbackListPtr*, void *, void *) { - dispatchException &= ~DE_RESET; - } - -@@ -1625,7 +1625,7 @@ - #if XORG >= 113 - #ifdef GLXEXT - if (serverGeneration == 1) -- LoadExtension(&glxExt, TRUE); -+ LoadExtensionList(&glxExt, 1, TRUE); - #endif - #endif - Added: xorg117.patch =================================================================== --- xorg117.patch (rev 0) +++ xorg117.patch 2015-02-16 10:22:12 UTC (rev 127789) @@ -0,0 +1,44 @@ +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 *)malloc(entries * sizeof(Pixel)); ++ prgb = (xrgb *)malloc(entries * sizeof(xrgb)); ++ defs = (xColorItem *)malloc(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); + } + } + Deleted: xserver116.patch =================================================================== --- xserver116.patch 2015-02-16 10:22:09 UTC (rev 127788) +++ xserver116.patch 2015-02-16 10:22:12 UTC (rev 127789) @@ -1,137 +0,0 @@ -diff -ur xorg-server-1.16.0.orig/configure.ac xorg-server-1.16.0/configure.ac ---- xorg-server-1.16.0.orig/configure.ac 2014-07-17 09:00:51.000000000 +0200 -+++ xorg-server-1.16.0/configure.ac 2014-08-04 20:43:26.856687998 +0200 -@@ -74,6 +74,7 @@ - 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 @@ - 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 @@ - 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 @@ - 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/man/Makefile - hw/vfb/Makefile - hw/vfb/man/Makefile -+hw/vnc/Makefile - hw/xnest/Makefile - hw/xnest/man/Makefile - hw/xwin/Makefile -diff -ur xorg-server-1.16.0.orig/hw/Makefile.am xorg-server-1.16.0/hw/Makefile.am ---- xorg-server-1.16.0.orig/hw/Makefile.am 2014-04-16 22:24:00.000000000 +0200 -+++ xorg-server-1.16.0/hw/Makefile.am 2014-08-04 20:43:26.856687998 +0200 -@@ -38,7 +38,8 @@ - $(DMX_SUBDIRS) \ - $(KDRIVE_SUBDIRS) \ - $(XQUARTZ_SUBDIRS) \ -- $(XWAYLAND_SUBDIRS) -+ $(XWAYLAND_SUBDIRS) \ -+ vnc - - DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland - -diff -ur xorg-server-1.16.0.orig/mi/miinitext.c xorg-server-1.16.0/mi/miinitext.c ---- xorg-server-1.16.0.orig/mi/miinitext.c 2014-04-16 22:24:00.000000000 +0200 -+++ xorg-server-1.16.0/mi/miinitext.c 2014-08-04 20:43:26.856687998 +0200 -@@ -111,6 +111,10 @@ - #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 @@ - - /* 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 -ur xorg-server-1.16.0.orig/os/WaitFor.c xorg-server-1.16.0/os/WaitFor.c ---- xorg-server-1.16.0.orig/os/WaitFor.c 2014-02-05 04:08:57.000000000 +0100 -+++ xorg-server-1.16.0/os/WaitFor.c 2014-08-04 20:44:26.350690385 +0200 -@@ -125,6 +125,9 @@ - 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 @@ - INT32 timeout = 0; - fd_set clientsReadable; - fd_set clientsWritable; -+ fd_set socketsWritable; - int curclient; - int selecterr; - static int nready; -@@ -212,6 +216,9 @@ - XFD_COPYSET(&AllSockets, &LastSelectMask); - } - -+ FD_ZERO(&socketsWritable); -+ vncWriteBlockHandler(&socketsWritable); -+ - BlockHandler((void *) &wt, (void *) &LastSelectMask); - if (NewOutputPending) - FlushAllOutput(); -@@ -223,10 +230,20 @@ - 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;