WakeFD.cxx: use two sockets instead of pipe on Win32

Pipes aren't really pollable on Windows.
GLib emulates polling on pipes using separate reader/writer threads.
This adds significant overhead and keeps a strong dependency on GLib.

socketpair() function is absent on Windows as well.
We implement it here in a loose way.
This commit is contained in:
Denis Krjuchkov
2013-01-13 15:30:53 +06:00
parent abb0fcb203
commit 90ab65f8c7
2 changed files with 128 additions and 5 deletions

View File

@@ -78,7 +78,7 @@ GlobalEvents::Initialize()
#ifndef G_OS_WIN32
GIOChannel *channel = g_io_channel_unix_new(wake_fd.Get());
#else
GIOChannel *channel = g_io_channel_win32_new_fd(wake_fd.Get());
GIOChannel *channel = g_io_channel_win32_new_socket(wake_fd.Get());
#endif
source_id = g_io_add_watch(channel, G_IO_IN,