• S
    glib: fix g_poll early timeout on windows · 5a007547
    Sangho Park 提交于
    g_poll has a problem on Windows when using
    timeouts < 10ms, in glib/gpoll.c:
    
    /* If not, and we have a significant timeout, poll again with
     * timeout then. Note that this will return indication for only
     * one event, or only for messages. We ignore timeouts less than
     * ten milliseconds as they are mostly pointless on Windows, the
     * MsgWaitForMultipleObjectsEx() call will timeout right away
     * anyway.
     */
    if (retval == 0 && (timeout == INFINITE || timeout >= 10))
      retval = poll_rest (poll_msgs, handles, nhandles, fds, nfds, timeout);
    
    so whenever g_poll is called with timeout < 10ms it does
    a quick poll instead of wait, this causes significant performance
    degradation of QEMU, thus we should use WaitForMultipleObjectsEx
    directly
    Signed-off-by: NStanislav Vorobiov <s.vorobiov@samsung.com>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    5a007547
oslib-win32.c 8.8 KB