diff --git a/src/cairo-time.c b/src/cairo-time.c index 9a594e8e6..a0003fbfc 100644 --- a/src/cairo-time.c +++ b/src/cairo-time.c @@ -103,6 +103,25 @@ _cairo_time_1s (void) return freq.QuadPart; } +#ifndef HAVE_UINT64_T +static cairo_always_inline cairo_time_t +_cairo_time_from_large_integer (LARGE_INTEGER t) +{ + cairo_int64_t r; + + r = _cairo_int64_lsl (_cairo_int32_to_int64 (t.HighPart), 32); + r = _cairo_int64_add (r, _cairo_int32_to_int64 (t.LowPart)); + + return r; +} +#else +static cairo_always_inline cairo_time_t +_cairo_time_from_large_integer (LARGE_INTEGER t) +{ + return t.QuadPart; +} +#endif + cairo_time_t _cairo_time_get (void) { @@ -110,7 +129,7 @@ _cairo_time_get (void) QueryPerformanceCounter (&t); - return t.QuadPart; + return _cairo_time_from_large_integer(t); } #elif defined(CAIRO_CLOCK)