Properly count IO completion as an event in WinAPIEventDriverCore.processEvents.

This commit is contained in:
Sönke Ludwig 2017-03-09 16:02:42 +01:00
parent 47133b0033
commit a25b49228f

View file

@ -110,12 +110,14 @@ final class WinAPIEventDriverCore : EventDriverCore {
auto ret = () @trusted { return MsgWaitForMultipleObjectsEx(cast(DWORD)m_registeredEvents.length, m_registeredEvents.ptr, auto ret = () @trusted { return MsgWaitForMultipleObjectsEx(cast(DWORD)m_registeredEvents.length, m_registeredEvents.ptr,
timeout_msecs, QS_ALLEVENTS, MWMO_ALERTABLE|MWMO_INPUTAVAILABLE); } (); timeout_msecs, QS_ALLEVENTS, MWMO_ALERTABLE|MWMO_INPUTAVAILABLE); } ();
if (ret >= WAIT_OBJECT_0 && ret < WAIT_OBJECT_0 + m_registeredEvents.length) { if (ret == WAIT_IO_COMPLETION) got_event = true;
else if (ret >= WAIT_OBJECT_0 && ret < WAIT_OBJECT_0 + m_registeredEvents.length) {
if (auto pc = m_registeredEvents[ret - WAIT_OBJECT_0] in m_eventCallbacks) { if (auto pc = m_registeredEvents[ret - WAIT_OBJECT_0] in m_eventCallbacks) {
(*pc)(); (*pc)();
got_event = true; got_event = true;
} }
} }
/*if (ret == WAIT_OBJECT_0) { /*if (ret == WAIT_OBJECT_0) {
got_event = true; got_event = true;
Win32TCPConnection[] to_remove; Win32TCPConnection[] to_remove;