Magellan Linux

Diff of /trunk/tigervnc/patches/tigervnc-1.7.0-xserver119.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2895 by niro, Fri Mar 31 13:02:43 2017 UTC revision 2896 by niro, Fri Mar 31 13:08:41 2017 UTC
# Line 1  Line 1 
1  diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c  diff -up xserver/configure.ac.xserver116-rebased xserver/configure.ac
2  --- tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c.xserver119 2016-09-08 12:31:18.000000000 +0200  --- xserver/configure.ac.xserver116-rebased 2016-09-29 13:14:45.595441590 +0200
3  +++ tigervnc-1.7.0/unix/xserver/hw/vnc/vncBlockHandler.c 2016-10-04 17:17:35.618889747 +0200  +++ xserver/configure.ac 2016-09-29 13:14:45.631442006 +0200
4  @@ -30,6 +30,23 @@  @@ -74,6 +74,7 @@ dnl forcing an entire recompile.x
5     AC_CONFIG_HEADERS(include/version-config.h)
6   #include "vncExtInit.h"  
7   #include "vncBlockHandler.h"   AM_PROG_AS
8  +#include "xorg-version.h"  +AC_PROG_CXX
9  +   AC_PROG_LN_S
10  +#if XORG >= 119   LT_PREREQ([2.2])
11  +   LT_INIT([disable-static win32-dll])
12  +static void vncBlockHandler(void* data, void* timeout)  @@ -1863,6 +1864,10 @@ if test "x$XVFB" = xyes; then
13  +{   AC_SUBST([XVFB_SYS_LIBS])
14  +  vncCallBlockHandlers(timeout);   fi
15  +}  
16  +  +dnl Xvnc DDX
17  +void vncRegisterBlockHandlers(void)  +AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
18  +{  +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"])
19  +  if (!RegisterBlockAndWakeupHandlers(vncBlockHandler,  +AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
20  +                                      (ServerWakeupHandlerProcPtr)NoopDDA, 0))  
21  +    FatalError("RegisterBlockAndWakeupHandlers() failed\n");   dnl Xnest DDX
22  +}  
23  +  @@ -1898,6 +1903,8 @@ if test "x$XORG" = xauto; then
24  +#else   fi
25     AC_MSG_RESULT([$XORG])
26   static void vncBlockHandler(void * data, OSTimePtr t, void * readmask);  
27   static void vncWakeupHandler(void * data, int nfds, void * readmask);  +AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
28  @@ -144,3 +161,5 @@ static void vncWriteWakeupHandlerFallbac  +
29     if test "x$XORG" = xyes; then
30     vncWriteWakeupHandler(ret, &fallbackFds);   XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
31   }   XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
32  +  @@ -2116,7 +2123,6 @@ if test "x$XORG" = xyes; then
33  +#endif   AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
34  diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc   AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
35  --- tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc.xserver119 2016-09-08 12:31:18.000000000 +0200   AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
36  +++ tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.cc 2016-10-04 17:17:35.618889747 +0200  - AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
37  @@ -241,6 +241,17 @@ int vncExtensionIsActive(int scrIdx)   AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
38     return (desktop[scrIdx] != NULL);   AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
39   }   AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
40    @@ -2691,6 +2697,7 @@ hw/dmx/Makefile
41  +#if XORG >= 119   hw/dmx/man/Makefile
42  +   hw/vfb/Makefile
43  +void vncCallBlockHandlers(int* timeout)   hw/vfb/man/Makefile
44  +{  +hw/vnc/Makefile
45  +  for (int scr = 0; scr < vncGetScreenCount(); scr++)   hw/xnest/Makefile
46  +    if (desktop[scr])   hw/xnest/man/Makefile
47  +      desktop[scr]->blockHandler(timeout);   hw/xwin/Makefile
48  +}  diff -up xserver/hw/Makefile.am.xserver116-rebased xserver/hw/Makefile.am
49  +  --- xserver/hw/Makefile.am.xserver116-rebased 2016-09-29 13:14:45.601441659 +0200
50  +#else  +++ xserver/hw/Makefile.am 2016-09-29 13:14:45.631442006 +0200
51  +  @@ -38,7 +38,8 @@ SUBDIRS = \
52   void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout)   $(DMX_SUBDIRS) \
53   {   $(KDRIVE_SUBDIRS) \
54     for (int scr = 0; scr < vncGetScreenCount(); scr++)   $(XQUARTZ_SUBDIRS) \
55  @@ -269,6 +280,8 @@ void vncCallWriteWakeupHandlers(fd_set *  - $(XWAYLAND_SUBDIRS)
56         desktop[scr]->writeWakeupHandler(fds, nfds);  + $(XWAYLAND_SUBDIRS) \
57   }  + vnc
58    
59  +#endif   DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland
60  +  
61   int vncGetAvoidShiftNumLock(void)  diff -up xserver/mi/miinitext.c.xserver116-rebased xserver/mi/miinitext.c
62   {  --- xserver/mi/miinitext.c.xserver116-rebased 2016-09-29 13:14:45.618441855 +0200
63     return (bool)avoidShiftNumLock;  +++ xserver/mi/miinitext.c 2016-09-29 13:14:45.631442006 +0200
64  diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h  @@ -114,6 +114,10 @@ SOFTWARE.
65  --- tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h.xserver119 2016-09-08 12:31:18.000000000 +0200   #include "micmap.h"
66  +++ tigervnc-1.7.0/unix/xserver/hw/vnc/vncExtInit.h 2016-10-04 17:17:35.618889747 +0200   #include "globals.h"
67  @@ -22,6 +22,7 @@  
68   #include <stdint.h>  +#ifdef TIGERVNC
69   #include <stddef.h>  +extern void vncExtensionInit(INITARGS);
70   #include <sys/select.h>  +#endif
71  +#include "xorg-version.h"  +
72     /* The following is only a small first step towards run-time
73   // Only from C++    * configurable extensions.
74   #ifdef __cplusplus    */
75  @@ -52,10 +53,14 @@ extern int vncInetdSock;  @@ -238,6 +242,9 @@ EnableDisableExtensionError(const char *
76   void vncExtensionInit(void);  
77   int vncExtensionIsActive(int scrIdx);   /* List of built-in (statically linked) extensions */
78     static const ExtensionModule staticExtensions[] = {
79  +#if XORG >= 119  +#ifdef TIGERVNC
80  +void vncCallBlockHandlers(int* timeout);  +    {vncExtensionInit, "VNC-EXTENSION", NULL},
81  +#else  +#endif
82   void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout);       {GEExtensionInit, "Generic Event Extension", &noGEExtension},
83   void vncCallReadWakeupHandlers(fd_set * fds, int nfds);       {ShapeExtensionInit, "SHAPE", NULL},
84   void vncCallWriteBlockHandlers(fd_set * fds, struct timeval ** timeout);   #ifdef MITSHM
85   void vncCallWriteWakeupHandlers(fd_set * fds, int nfds);  --- xserver/include/os.h~ 2016-10-03 09:07:29.000000000 +0200
86  +#endif  +++ xserver/include/os.h 2016-10-03 14:13:00.013654506 +0200
87    @@ -621,7 +621,7 @@
88   int vncGetAvoidShiftNumLock(void);   extern _X_EXPORT void
89     LogClose(enum ExitCode error);
90  diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c   extern _X_EXPORT Bool
91  --- tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c.xserver119 2016-09-08 12:31:18.000000000 +0200  -LogSetParameter(LogParameter param, int value);
92  +++ tigervnc-1.7.0/unix/xserver/hw/vnc/vncHooks.c 2016-10-04 17:17:35.618889747 +0200  +LogSetParameter(enum _LogParameter param, int value);
93  @@ -128,9 +128,11 @@ static Bool vncHooksDisplayCursor(Device   extern _X_EXPORT void
94   #if XORG <= 112   LogVWrite(int verb, const char *f, va_list args)
95   static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,   _X_ATTRIBUTE_PRINTF(2, 0);
                                   pointer pReadmask);  
 -#else  
 +#elif XORG <= 118  
  static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout,  
                                   void * pReadmask);  
 +#else  
 +static void vncHooksBlockHandler(ScreenPtr pScreen, void * pTimeout);  
  #endif  
  #ifdef RENDER  
  static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,  
 @@ -716,9 +718,11 @@ out:  
  #if XORG <= 112  
  static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,  
                                   pointer pReadmask)  
 -#else  
 +#elif XORG <= 118  
  static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout,  
                                   void * pReadmask)  
 +#else  
 +static void vncHooksBlockHandler(ScreenPtr pScreen_, void * pTimeout)  
  #endif  
  {  
  #if XORG <= 112  
 @@ -731,8 +735,10 @@ static void vncHooksBlockHandler(ScreenP  
   
  #if XORG <= 112  
    (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);  
 -#else  
 +#elif XORG <= 118  
    (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);  
 +#else  
 +  (*pScreen->BlockHandler) (pScreen, pTimeout);  
  #endif  
   
    vncHooksScreen->ignoreHooks--;  
 @@ -1033,12 +1039,21 @@ static void vncHooksCopyClip(GCPtr dst,  
   
  // Unwrap and rewrap helpers  
   
 +#if XORG >= 116  
 +#define GC_OP_PROLOGUE(pGC, name)\  
 +    vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\  
 +    const GCFuncs *oldFuncs = pGC->funcs;\  
 +    pGC->funcs = pGCPriv->wrappedFuncs;\  
 +    pGC->ops = pGCPriv->wrappedOps; \  
 +    DBGPRINT((stderr,"vncHooks" #name " called\n"))  
 +#else  
  #define GC_OP_PROLOGUE(pGC, name)\  
      vncHooksGCPtr pGCPriv = vncHooksGCPrivate(pGC);\  
      GCFuncs *oldFuncs = pGC->funcs;\  
      pGC->funcs = pGCPriv->wrappedFuncs;\  
      pGC->ops = pGCPriv->wrappedOps; \  
      DBGPRINT((stderr,"vncHooks" #name " called\n"))  
 +#endif  
   
  #define GC_OP_EPILOGUE(pGC)\  
      pGCPriv->wrappedOps = pGC->ops;\  
 diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h  
 --- tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h.xserver119 2016-09-08 12:31:18.000000000 +0200  
 +++ tigervnc-1.7.0/unix/xserver/hw/vnc/xorg-version.h 2016-10-04 17:24:51.640654527 +0200  
 @@ -50,8 +50,10 @@  
  #define XORG 117  
  #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (18 * 100000) + (99 * 1000))  
  #define XORG 118  
 +#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (19 * 100000) + (99 * 1000))  
 +#define XORG 119  
  #else  
 -#error "X.Org newer than 1.18 is not supported"  
 +#error "X.Org newer than 1.19 is not supported"  
  #endif  
   
  #endif  
 diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc  
 --- tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc.xserver119 2016-09-08 12:31:18.000000000 +0200  
 +++ tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.cc 2016-10-04 17:23:47.171977905 +0200  
 @@ -89,6 +89,30 @@ public:  
    XserverDesktop* desktop;  
  };  
   
 +#if XORG >= 119  
 +extern "C" {  
 +/*  
 + * xserver NotifyFd callbacks. Note we also expect write notifies to work,  
 + * which only works with xserver >= 1.19.  
 + */  
 +#include "os.h"  
 +  
 +static void HandleListenFd(int fd, int xevents, void *data)  
 +{  
 +  XserverDesktop *desktop = (XserverDesktop *)data;  
 +  
 +  desktop->handleListenFd(fd);  
 +}  
 +  
 +static void HandleSocketFd(int fd, int xevents, void *data)  
 +{  
 +  XserverDesktop *desktop = (XserverDesktop *)data;  
 +  
 +  desktop->handleSocketFd(fd, xevents);  
 +}  
 +  
 +}  
 +#endif  
   
  XserverDesktop::XserverDesktop(int screenIndex_,  
                                 std::list<network::TcpListener*> listeners_,  
 @@ -110,15 +134,35 @@ XserverDesktop::XserverDesktop(int scree  
   
    if (!httpListeners.empty ())  
      httpServer = new FileHTTPServer(this);  
 +  
 +#if XORG >= 119  
 +  for (std::list<TcpListener*>::iterator i = listeners.begin();  
 +       i != listeners.end();  
 +       i++) {  
 +    SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);  
 +  }  
 +  
 +  for (std::list<TcpListener*>::iterator i = httpListeners.begin();  
 +       i != httpListeners.end();  
 +       i++) {  
 +    SetNotifyFd((*i)->getFd(), HandleListenFd, X_NOTIFY_READ, this);  
 +  }  
 +#endif  
  }  
   
  XserverDesktop::~XserverDesktop()  
  {  
    while (!listeners.empty()) {  
 +#if XORG >= 119  
 +    RemoveNotifyFd(listeners.back()->getFd());  
 +#endif  
      delete listeners.back();  
      listeners.pop_back();  
    }  
    while (!httpListeners.empty()) {  
 +#if XORG >= 119  
 +    RemoveNotifyFd(listeners.back()->getFd());  
 +#endif  
      delete httpListeners.back();  
      httpListeners.pop_back();  
    }  
 @@ -388,6 +432,140 @@ void XserverDesktop::add_copied(const rf  
    }  
  }  
   
 +#if XORG >= 119  
 +void XserverDesktop::handleListenFd(int fd)  
 +{  
 +  std::list<TcpListener*>::iterator i;  
 +  SocketServer *fd_server = NULL;  
 +  bool is_http = false;  
 +  
 +  for (i = listeners.begin(); i != listeners.end(); i++) {  
 +    if ((*i)->getFd() == fd) {  
 +      fd_server = server;  
 +      break;  
 +    }  
 +  }  
 +  if (httpServer && !fd_server) {  
 +    for (i = httpListeners.begin(); i != httpListeners.end(); i++) {  
 +      if ((*i)->getFd() == fd) {  
 +        fd_server = httpServer;  
 +        is_http = true;  
 +        break;  
 +      }  
 +    }  
 +  }  
 +  if (!fd_server) {  
 +    vlog.error("XserverDesktop::handleListenFd: Error cannot find fd");  
 +    return;  
 +  }  
 +  
 +  Socket* sock = (*i)->accept();  
 +  sock->outStream().setBlocking(false);  
 +  vlog.debug("new %sclient, sock %d", is_http ? "http " : "", sock->getFd());  
 +  fd_server->addSocket(sock);  
 +  SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);  
 +}  
 +  
 +void XserverDesktop::handleSocketFd(int fd, int xevents)  
 +{  
 +  std::list<Socket*> sockets;  
 +  std::list<Socket*>::iterator i;  
 +  SocketServer *fd_server = NULL;  
 +  bool is_http = false;  
 +  
 +  server->getSockets(&sockets);  
 +  for (i = sockets.begin(); i != sockets.end(); i++) {  
 +    if ((*i)->getFd() == fd) {  
 +      fd_server = server;  
 +      break;  
 +    }  
 +  }  
 +  if (httpServer && !fd_server) {  
 +    httpServer->getSockets(&sockets);  
 +    for (i = sockets.begin(); i != sockets.end(); i++) {  
 +      if ((*i)->getFd() == fd) {  
 +        fd_server = httpServer;  
 +        is_http = true;  
 +        break;  
 +      }  
 +    }  
 +  }  
 +  if (!fd_server) {  
 +    vlog.error("XserverDesktop::handleSocketFd: Error cannot find fd");  
 +    return;  
 +  }  
 +  
 +  if (xevents & X_NOTIFY_READ)  
 +    fd_server->processSocketReadEvent(*i);  
 +  
 +  if (xevents & X_NOTIFY_WRITE)  
 +    fd_server->processSocketWriteEvent(*i);  
 +  
 +  if ((*i)->isShutdown()) {  
 +    vlog.debug("%sclient gone, sock %d", is_http ? "http " : "", fd);  
 +    RemoveNotifyFd(fd);  
 +    fd_server->removeSocket(*i);  
 +    if (!is_http)  
 +      vncClientGone(fd);  
 +    delete (*i);  
 +  }  
 +}  
 +  
 +void XserverDesktop::blockHandler(int* timeout)  
 +{  
 +  // We don't have a good callback for when we can init input devices[1],  
 +  // so we abuse the fact that this routine will be called first thing  
 +  // once the dix is done initialising.  
 +  // [1] Technically Xvnc has InitInput(), but libvnc.so has nothing.  
 +  vncInitInputDevice();  
 +  
 +  try {  
 +    std::list<Socket*> sockets;  
 +    std::list<Socket*>::iterator i;  
 +    server->getSockets(&sockets);  
 +    for (i = sockets.begin(); i != sockets.end(); i++) {  
 +      int fd = (*i)->getFd();  
 +      if ((*i)->isShutdown()) {  
 +        vlog.debug("client gone, sock %d",fd);  
 +        server->removeSocket(*i);  
 +        vncClientGone(fd);  
 +        delete (*i);  
 +      } else {  
 +        /* Update existing NotifyFD to listen for write (or not) */  
 +        if ((*i)->outStream().bufferUsage() > 0)  
 +          SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ | X_NOTIFY_WRITE, this);  
 +        else  
 +          SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ, this);  
 +      }  
 +    }  
 +    if (httpServer) {  
 +      httpServer->getSockets(&sockets);  
 +      for (i = sockets.begin(); i != sockets.end(); i++) {  
 +        int fd = (*i)->getFd();  
 +        if ((*i)->isShutdown()) {  
 +          vlog.debug("http client gone, sock %d",fd);  
 +          httpServer->removeSocket(*i);  
 +          delete (*i);  
 +        } else {  
 +          /* Update existing NotifyFD to listen for write (or not) */  
 +          if ((*i)->outStream().bufferUsage() > 0)  
 +            SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ | X_NOTIFY_WRITE, this);  
 +          else  
 +            SetNotifyFd(fd, HandleSocketFd, X_NOTIFY_READ, this);  
 +        }  
 +      }  
 +    }  
 +  
 +    int nextTimeout = server->checkTimeouts();  
 +    if (nextTimeout > 0 && (*timeout == -1 || nextTimeout < *timeout))  
 +      *timeout = nextTimeout;  
 +  } catch (rdr::Exception& e) {  
 +    vlog.error("XserverDesktop::blockHandler: %s",e.str());  
 +  }  
 +}  
 +  
 +#else  
 +  
  void XserverDesktop::readBlockHandler(fd_set* fds, struct timeval ** timeout)  
  {  
    // We don't have a good callback for when we can init input devices[1],  
 @@ -600,10 +778,15 @@ void XserverDesktop::writeWakeupHandler(  
    }  
  }  
   
 +#endif  
 +  
  void XserverDesktop::addClient(Socket* sock, bool reverse)  
  {  
    vlog.debug("new client, sock %d reverse %d",sock->getFd(),reverse);  
    server->addSocket(sock, reverse);  
 +#if XORG >= 119  
 +  SetNotifyFd(sock->getFd(), HandleSocketFd, X_NOTIFY_READ, this);  
 +#endif  
  }  
   
  void XserverDesktop::disconnectClients()  
 diff -up tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h.xserver119 tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h  
 --- tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h.xserver119 2016-09-08 12:31:18.000000000 +0200  
 +++ tigervnc-1.7.0/unix/xserver/hw/vnc/XserverDesktop.h 2016-10-04 17:17:35.617889712 +0200  
 @@ -38,6 +38,7 @@  
  #include <rfb/VNCServerST.h>  
  #include <rdr/SubstitutingInStream.h>  
  #include "Input.h"  
 +#include "xorg-version.h"  
   
  namespace rfb {  
    class VNCServerST;  
 @@ -69,10 +70,16 @@ public:  
                   const unsigned char *rgbaData);  
    void add_changed(const rfb::Region &region);  
    void add_copied(const rfb::Region &dest, const rfb::Point &delta);  
 +#if XORG >= 119  
 +  void handleListenFd(int fd);  
 +  void handleSocketFd(int fd, int xevents);  
 +  void blockHandler(int* timeout);  
 +#else  
    void readBlockHandler(fd_set* fds, struct timeval ** timeout);  
    void readWakeupHandler(fd_set* fds, int nfds);  
    void writeBlockHandler(fd_set* fds, struct timeval ** timeout);  
    void writeWakeupHandler(fd_set* fds, int nfds);  
 +#endif  
    void addClient(network::Socket* sock, bool reverse);  
    void disconnectClients();  
   

Legend:
Removed from v.2895  
changed lines
  Added in v.2896