]> git.proxmox.com Git - qemu.git/commitdiff
win32: implement missing timersub
authorBlue Swirl <blauwirbel@gmail.com>
Sun, 13 Mar 2011 10:30:52 +0000 (10:30 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Tue, 15 Mar 2011 20:49:56 +0000 (20:49 +0000)
Implement and wrap timersub() for Win32.

Acked-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
osdep.h
ui/vnc.c

diff --git a/osdep.h b/osdep.h
index 27eedcf1003a0a1cb198bdd0989ccc94857a44d4..5e4886030e0355f9c5e514e95f8add3cf066ffa8 100644 (file)
--- a/osdep.h
+++ b/osdep.h
@@ -8,9 +8,7 @@
 #include <sys/signal.h>
 #endif
 
-#ifndef _WIN32
 #include <sys/time.h>
-#endif
 
 #ifndef glue
 #define xglue(x, y) x ## y
@@ -131,4 +129,21 @@ int qemu_madvise(void *addr, size_t len, int advice);
 
 int qemu_create_pidfile(const char *filename);
 
+#ifdef _WIN32
+static inline void qemu_timersub(const struct timeval *val1,
+                                 const struct timeval *val2,
+                                 struct timeval *res)
+{
+    res->tv_sec = val1->tv_sec - val2->tv_sec;
+    if (val1->tv_usec < val2->tv_usec) {
+        res->tv_sec--;
+        res->tv_usec = val1->tv_usec - val2->tv_usec + 1000 * 1000;
+    } else {
+        res->tv_usec = val1->tv_usec - val2->tv_usec;
+    }
+}
+#else
+#define qemu_timersub timersub
+#endif
+
 #endif
index 34dc0cdc34c1861529ffdd65e54c102f2b1f170c..1b6896576c8dee62a835ac2124cbeb9f7c686291 100644 (file)
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2302,7 +2302,7 @@ static int vnc_update_stats(VncDisplay *vd,  struct timeval * tv)
         }
     }
 
-    timersub(tv, &VNC_REFRESH_STATS, &res);
+    qemu_timersub(tv, &VNC_REFRESH_STATS, &res);
 
     if (timercmp(&vd->guest.last_freq_check, &res, >)) {
         return has_dirty;
@@ -2320,7 +2320,7 @@ static int vnc_update_stats(VncDisplay *vd,  struct timeval * tv)
             }
 
             max = rect->times[(rect->idx + count - 1) % count];
-            timersub(tv, &max, &res);
+            qemu_timersub(tv, &max, &res);
 
             if (timercmp(&res, &VNC_REFRESH_LOSSY, >)) {
                 rect->freq = 0;
@@ -2331,7 +2331,7 @@ static int vnc_update_stats(VncDisplay *vd,  struct timeval * tv)
 
             min = rect->times[rect->idx];
             max = rect->times[(rect->idx + count - 1) % count];
-            timersub(&max, &min, &res);
+            qemu_timersub(&max, &min, &res);
 
             rect->freq = res.tv_sec + res.tv_usec / 1000000.;
             rect->freq /= count;