The w32 main loop has been mostly broken by the introduction of the glib main loop. glib's g_poll does not use sockets on w32, so we need a separate approach.
Patch 1 is a simple cleanup that is needed later in the series. Patch 2 and patch 3 completely separate the way the main loop waits on POSIX and w32 systems, and drop glib source handling from the w32 main loop. Patch 4 fixes a longstanding bug in how sockets are handled, also simplifying the code in the process. On top of this simplification, patch 5 starts using g_poll in the w32 main loop and patch 6 adds back glib source handling. I didn't test this in the conditions explained in bug 916720, but I tested both a TCP monitor and an stdio monitor and both work (under Wine that is). Stefan, can you please take care of shepherding the patches in (pinging etc.)? Paolo Bonzini (6): slirp: use socket_set_nonblock main loop: use msec-based timeout in glib_select_fill main-loop: disable fd_set-based glib integration under w32 main-loop: interrupt wait when data arrives on a socket main-loop: replace WaitForMultipleObjects with g_poll main-loop: integrate glib sources for w32 main-loop.c | 147 +++++++++++++++++++++++++++++++----------------------- main-loop.h | 1 + oslib-win32.c | 3 + slirp/misc.c | 46 +---------------- slirp/tcp_subr.c | 4 +- 5 files changed, 92 insertions(+), 109 deletions(-) -- 1.7.7.6