Patch from Yu Kuan that makes watched sockets behave much better. See
authorTor Lillqvist <tml@novell.com>
Sun, 20 Jul 2008 20:44:39 +0000 (20:44 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Sun, 20 Jul 2008 20:44:39 +0000 (20:44 +0000)
2008-07-20  Tor Lillqvist  <tml@novell.com>

* glib/giowin32.c (g_io_win32_prepare): Patch from Yu Kuan that
makes watched sockets behave much better. See gtk-devel-list
archives from May for the (unfortunately rather meager)
discussion. This patch fixes the presented simple test program,
which reasonably could be expected to work.

svn path=/trunk/; revision=7220

ChangeLog
glib/giowin32.c

index e843463..8e2c3bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-07-20  Tor Lillqvist  <tml@novell.com>
+
+       * glib/giowin32.c (g_io_win32_prepare): Patch from Yu Kuan that
+       makes watched sockets behave much better. See gtk-devel-list
+       archives from May for the (unfortunately rather meager)
+       discussion. This patch fixes the presented simple test program,
+       which reasonably could be expected to work.
+
 2008-07-18  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
index eef439b..1f6727f 100644 (file)
@@ -733,6 +733,13 @@ g_io_win32_prepare (GSource *source,
          if (channel->debug)
            g_print ("\n  setting last_events=0");
          channel->last_events = 0;
+
+         if ((event_mask & FD_WRITE) && !channel->write_would_have_blocked)
+           {
+             if (channel->debug)
+               g_print (" WSASetEvent(%#x)", watch->pollfd.fd);
+             WSASetEvent ((WSAEVENT) watch->pollfd.fd);
+           }
        }
       break;