diff -up xserver/configure.ac.vnc xserver/configure.ac --- xserver/configure.ac.vnc 2011-05-11 11:02:51.229669941 +0200 +++ xserver/configure.ac 2011-05-11 11:03:07.754072695 +0200 @@ -31,7 +31,7 @@ RELEASE_DATE="5 November 2008" REMEMBER_REMEMBER="The Fifth of November" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) -AM_MAINTAINER_MODE +m4_pattern_allow([AC_DEFINE]) dnl this gets generated by autoheader, and thus contains all the defines. we dnl don't ever actually use it, internally. @@ -54,6 +54,7 @@ dnl kdrive-config.h covers the kdrive DD AC_CONFIG_HEADERS(include/kdrive-config.h) AC_PROG_CC +AC_PROG_CXX AM_PROG_AS AC_PROG_INSTALL AC_PROG_LN_S @@ -1010,7 +1011,7 @@ AC_DEFINE(SHAPE, 1, [Support SHAPE exten AC_DEFINE(XKB, 1, [Build XKB]) AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) -AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) +AC_DEFINE(XKB_DFLT_DISABLED, 1, [Disable XKB per default]) REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" XKB_LIB='$(top_builddir)/xkb/libxkb.la' XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' @@ -1220,6 +1221,9 @@ if test "x$XVFB" = xyes; then AC_SUBST([XVFB_SYS_LIBS]) fi +dnl Xvnc DDX +AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XEXT_INC $FB_INC $MI_INC $RENDER_INC $RANDR_INC"]) +AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"]) dnl Xnest DDX @@ -1314,6 +1318,8 @@ xorg_bus_ppcpci=no xorg_bus_sparcpci=no xorg_bus_sparc=no +AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version]) + if test "x$XORG" = xyes -o "x$XGL" = 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' @@ -1521,7 +1527,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xye AC_DEFINE(XORGSERVER, 1, [Building Xorg server]) AC_DEFINE(XFree86Server, 1, [Building XFree86 server]) AC_DEFINE(XFree86LOADER, 1, [Building loadable 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]) @@ -2184,6 +2189,7 @@ hw/dmx/input/Makefile hw/dmx/glxProxy/Makefile hw/dmx/Makefile hw/vfb/Makefile +hw/vnc/Makefile hw/xgl/Makefile hw/xgl/egl/Makefile hw/xgl/egl/module/Makefile diff -up xserver/hw/Makefile.am.vnc xserver/hw/Makefile.am --- xserver/hw/Makefile.am.vnc 2011-05-11 11:02:51.809648976 +0200 +++ xserver/hw/Makefile.am 2011-05-11 11:03:07.754072695 +0200 @@ -43,7 +43,8 @@ SUBDIRS = \ $(DMX_SUBDIRS) \ $(KDRIVE_SUBDIRS) \ $(XQUARTZ_SUBDIRS) \ - $(XPRINT_SUBDIRS) + $(XPRINT_SUBDIRS) \ + vnc DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xgl xprint diff -up xserver/mi/miinitext.c.vnc xserver/mi/miinitext.c --- xserver/mi/miinitext.c.vnc 2011-05-11 11:02:53.156600294 +0200 +++ xserver/mi/miinitext.c 2011-05-11 11:03:31.079229673 +0200 @@ -292,6 +292,9 @@ extern void BigReqExtensionInit(INITARGS #ifdef MITMISC extern void MITMiscExtensionInit(INITARGS); #endif +#ifdef TIGERVNC +extern void vncExtensionInit(INITARGS); +#endif #ifdef XIDLE extern void XIdleExtensionInit(INITARGS); #endif @@ -566,6 +569,9 @@ InitExtensions(argc, argv) #ifdef MITMISC if (!noMITMiscExtension) MITMiscExtensionInit(); #endif +#ifdef TIGERVNC + vncExtensionInit(); +#endif #ifdef XIDLE if (!noXIdleExtension) XIdleExtensionInit(); #endif --- xserver/os/WaitFor.c.orig 2011-10-07 12:57:57.000000000 +0200 +++ xserver/os/WaitFor.c 2011-10-07 13:21:11.000000000 +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; int nready; @@ -220,23 +224,29 @@ SmartScheduleStopTimer (); #endif + FD_ZERO(&socketsWritable); + vncWriteBlockHandler(&socketsWritable); BlockHandler((pointer)&wt, (pointer)&LastSelectMask); if (NewOutputPending) FlushAllOutput(); /* keep this check close to select() call to minimize race */ if (dispatchException) i = -1; - else if (AnyClientsWriteBlocked) - { - XFD_COPYSET(&ClientsWriteBlocked, &clientsWritable); - i = Select (MaxClients, &LastSelectMask, &clientsWritable, NULL, wt); - } - else - { - i = Select (MaxClients, &LastSelectMask, NULL, NULL, wt); + else { + 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); #ifdef SMART_SCHEDULE SmartScheduleStartTimer (); #endif