GetTimeMS()
{
// best replacement for windows timeGetTime/GetTickCount
// 1st call sets start_mstime, subsequent are the diff
// between start_mstime and now_mstime to match SDL_GetTick behavior
// of previous usage. We might want to change this as CTimeUtils::GetTimeMS is
// time (ms) since system startup.
#if defined(_WIN32)
return timeGetTime();
#elif defined(_LINUX)
#if defined(__APPLE__)
static uint64_t start_time = 0;
uint64_t now_time;
now_time = CVGetCurrentHostTime() * 1000 / CVGetHostClockFrequency();
if (start_time == 0)
start_time = now_time;
return(now_time - start_time);
#else
static uint64_t start_mstime = 0;
uint64_t now_mstime;
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
now_mstime = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
if (start_mstime == 0)
{
start_mstime = now_mstime;
}
return(now_mstime - start_mstime);
#endif
#endif
}
{
// best replacement for windows timeGetTime/GetTickCount
// 1st call sets start_mstime, subsequent are the diff
// between start_mstime and now_mstime to match SDL_GetTick behavior
// of previous usage. We might want to change this as CTimeUtils::GetTimeMS is
// time (ms) since system startup.
#if defined(_WIN32)
return timeGetTime();
#elif defined(_LINUX)
#if defined(__APPLE__)
static uint64_t start_time = 0;
uint64_t now_time;
now_time = CVGetCurrentHostTime() * 1000 / CVGetHostClockFrequency();
if (start_time == 0)
start_time = now_time;
return(now_time - start_time);
#else
static uint64_t start_mstime = 0;
uint64_t now_mstime;
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
now_mstime = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
if (start_mstime == 0)
{
start_mstime = now_mstime;
}
return(now_mstime - start_mstime);
#endif
#endif
}