glib/gpoll W32: use WFSOE() instead of SleepEx()

WaitForSingleObjectEx() is supposed to be a more efficient sleep method.
It waits on the handle of the current process. That handle will be signaled once the process terminates, and since we're *inside* the process, it'll never happen (and if it does, we won't care anymore).
The use of an alertable wait ensures that we wake up when a completion routine wants to run.

https://bugzilla.gnome.org/show_bug.cgi?id=785468
This commit is contained in:
Руслан Ижбулатов 2017-07-29 07:56:19 +00:00
parent d67b58a9a6
commit cb2316aaa1

View File

@ -164,10 +164,11 @@ poll_rest (gboolean poll_msgs,
if (timeout == INFINITE)
ready = WAIT_FAILED;
else
{
SleepEx (timeout, TRUE);
ready = WAIT_TIMEOUT;
}
{
/* Wait for the current process to die, more efficient than SleepEx(). */
WaitForSingleObjectEx (GetCurrentProcess (), timeout, TRUE);
ready = WAIT_TIMEOUT;
}
}
else
{