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;
|
||
|
};
|