summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--osdep.h19
-rw-r--r--ui/vnc.c6
2 files changed, 20 insertions, 5 deletions
diff --git a/osdep.h b/osdep.h
index 27eedcf100..5e4886030e 100644
--- 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
diff --git a/ui/vnc.c b/ui/vnc.c
index 34dc0cdc34..1b6896576c 100644
--- 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;