]> git.proxmox.com Git - mirror_qemu.git/blobdiff - main-loop.c
qapi: QMP input visitor, handle floats parsed as ints
[mirror_qemu.git] / main-loop.c
index 0457bf26f43c279395957f7c1d00487ee3dcbead..eb3b6e6253694b2c9f62ccbd7ef431fc78afe800 100644 (file)
@@ -410,6 +410,7 @@ static int os_host_main_loop_wait(uint32_t timeout)
     int ret, i;
     PollingEntry *pe;
     WaitObjects *w = &wait_objects;
+    gint poll_timeout;
     static struct timeval tv0;
 
     /* XXX: need to suppress polling by better using win32 events */
@@ -429,7 +430,7 @@ static int os_host_main_loop_wait(uint32_t timeout)
     }
 
     g_main_context_prepare(context, &max_priority);
-    n_poll_fds = g_main_context_query(context, max_priority, &timeout,
+    n_poll_fds = g_main_context_query(context, max_priority, &poll_timeout,
                                       poll_fds, ARRAY_SIZE(poll_fds));
     g_assert(n_poll_fds <= ARRAY_SIZE(poll_fds));
 
@@ -438,8 +439,12 @@ static int os_host_main_loop_wait(uint32_t timeout)
         poll_fds[n_poll_fds + i].events = G_IO_IN;
     }
 
+    if (poll_timeout < 0 || timeout < poll_timeout) {
+        poll_timeout = timeout;
+    }
+
     qemu_mutex_unlock_iothread();
-    ret = g_poll(poll_fds, n_poll_fds + w->num, timeout);
+    ret = g_poll(poll_fds, n_poll_fds + w->num, poll_timeout);
     qemu_mutex_lock_iothread();
     if (ret > 0) {
         for (i = 0; i < w->num; i++) {