Am 15.10.2013 19:05, schrieb Dimitar Zhekov:
The last time FiF-ed, glib did not contain any calls to PeekNamedPipe or SetNamedPipeHandleState. I am not aware of any way to implement async anonymous pipe I/O under Windows without these, and see no reason to check the various glib functions one by one. (Don't be fooled by "Named", these work for anonymous pipes, and in fact the win~1 named pipes don't need them as they support event based I/O).
Speaking of PeekNamedPipe...
A few months ago I contributed a fully working win32 poll() implementation to PulseAudio (based on gnulib). Because pacat could not read from a process that outputs an audio data stream to stdout, and this case did not work with their poll() function (it really only handled sockets properly). Anyway, the poll() I provided handles pipes and console stdin/stdout as well. You can find it here: http://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/src/pulsecore/poll-wi...
I remember I looked how glib implements poll() on Windows (because pulseaudio still failed when it used its glib-mainloop plugin) and it also didn't have a proper implementation. I think glib uses poll() for GIO stuff and based on my findings I would expect that glib does poorly with GIO on win32 pipes.
Perhaps it would be worthwhile to get that poll() implementation into glib?
Best regards.