39 lines
627 B
C++
39 lines
627 B
C++
#pragma once
|
|
|
|
#include "common/ITypes.h"
|
|
|
|
/**
|
|
* A high-resolution timer.
|
|
*/
|
|
class ITimer
|
|
{
|
|
public:
|
|
ITimer();
|
|
~ITimer();
|
|
|
|
static void Init(void);
|
|
static void DeInit(void);
|
|
|
|
void Start(void);
|
|
|
|
double GetElapsedTime(void); // seconds
|
|
|
|
private:
|
|
UInt64 m_qpcBase; // QPC
|
|
UInt32 m_tickBase; // timeGetTime
|
|
|
|
static double s_secondsPerCount;
|
|
static TIMECAPS s_timecaps;
|
|
static bool s_setTime;
|
|
|
|
// safe QPC stuff
|
|
static UInt64 GetQPC(void);
|
|
|
|
static UInt64 s_lastQPC;
|
|
static UInt64 s_qpcWrapMargin;
|
|
static bool s_hasLastQPC;
|
|
|
|
static UInt32 s_qpcWrapCount;
|
|
static UInt32 s_qpcInaccurateCount;
|
|
};
|