* sigproc.cc (cygWFMO): Don't assume that cancellable event is always
available. * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::waitforspace): Use cygWFMO instead of WaitForMultipleObjects. (fhandler_dev_dsp::Audio_in::waitfordata): Ditto. * fhandler_fifo.cc (fhandler_fifo::wait): Ditto. * fhandler_serial.cc (fhandler_serial::raw_read): Ditto. (fhandler_serial::raw_write): Ditto. * fhandler_tty.cc (fhandler_pty_slave::read): Ditto. * select.cc (cygwin_select): Ditto for degenerate case.
This commit is contained in:
@@ -210,15 +210,13 @@ fhandler_fifo::wait (HANDLE h)
|
||||
else
|
||||
what = "overlapped event";
|
||||
#endif
|
||||
HANDLE w4[3] = {h, signal_arrived, pthread::get_cancel_event ()};
|
||||
|
||||
/* Set the wait to zero for non-blocking I/O-related events. */
|
||||
DWORD wait = ((h == read_ready || h == write_ready)
|
||||
&& get_flags () & O_NONBLOCK) ? 0 : INFINITE;
|
||||
|
||||
debug_only_printf ("waiting for %s", what);
|
||||
/* Wait for the event. Set errno, as appropriate if something goes wrong. */
|
||||
switch (WaitForMultipleObjects (3, w4, false, wait))
|
||||
switch (cygWFMO (1, wait))
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
debug_only_printf ("successfully waited for %s", what);
|
||||
|
Reference in New Issue
Block a user