Add asserts to check for faililng QueryPerformance* calls in precise_time_ns

Closes #2675.
This commit is contained in:
Birunthan Mohanathas 2013-11-11 21:21:51 +02:00
parent 61f76a5130
commit 36afd60609

View file

@ -217,14 +217,16 @@ precise_time_ns(uint64_t *ns) {
uint64_t time_nano = time * (info.numer / info.denom);
*ns = time_nano;
#elif __WIN32__
int64_t ticks_per_s;
QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_s);
if (ticks_per_s == 0LL) {
ticks_per_s = 1LL;
LARGE_INTEGER ticks_per_s;
BOOL query_result = QueryPerformanceFrequency(&ticks_per_s);
assert(query_result);
if (ticks_per_s.QuadPart == 0LL) {
ticks_per_s.QuadPart = 1LL;
}
int64_t ticks;
QueryPerformanceCounter((LARGE_INTEGER *)&ticks);
*ns = (uint64_t)((ticks * ns_per_s) / ticks_per_s);
LARGE_INTEGER ticks;
query_result = QueryPerformanceCounter(&ticks);
assert(query_result);
*ns = (uint64_t)((ticks.QuadPart * ns_per_s) / ticks_per_s.QuadPart);
#else
timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);