diff options
-rw-r--r-- | osdep.h | 19 | ||||
-rw-r--r-- | ui/vnc.c | 6 |
2 files changed, 20 insertions, 5 deletions
@@ -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 @@ -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; |