Reviewed function GetCurrentTime() on WIN32
This commit is contained in:
parent
3b45336929
commit
b894a78385
1 changed files with 8 additions and 33 deletions
|
@ -35,10 +35,9 @@
|
||||||
#include <stdint.h> // Defines int32_t, int64_t
|
#include <stdint.h> // Defines int32_t, int64_t
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
//#define WIN32_LEAN_AND_MEAN
|
// Functions required to query time on Windows
|
||||||
//#include <Windows.h> // ISSUE: Rectangle redeclared, CloseWindow/ShowCursor conflicting types
|
int __stdcall QueryPerformanceCounter(unsigned long long int *lpPerformanceCount);
|
||||||
int __stdcall QueryPerformanceCounter(unsigned long long int *lpPerformanceCount);
|
int __stdcall QueryPerformanceFrequency(unsigned long long int *lpFrequency);
|
||||||
int __stdcall QueryPerformanceFrequency(unsigned long long int *lpFrequency);
|
|
||||||
#elif defined(__linux)
|
#elif defined(__linux)
|
||||||
#include <time.h> // Used for clock functions
|
#include <time.h> // Used for clock functions
|
||||||
#endif
|
#endif
|
||||||
|
@ -500,38 +499,14 @@ static float VectorDotProduct(Vector2 v1, Vector2 v2)
|
||||||
static double GetCurrentTime()
|
static double GetCurrentTime()
|
||||||
{
|
{
|
||||||
double time = 0;
|
double time = 0;
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
/*
|
unsigned long long int clockFrequency, currentTime;
|
||||||
// NOTE: Requires Windows.h
|
|
||||||
FILETIME tm;
|
|
||||||
GetSystemTimePreciseAsFileTime(&tm);
|
|
||||||
ULONGLONG nowTime = ((ULONGLONG)tm.dwHighDateTime << 32) | (ULONGLONG)tm.dwLowDateTime; // Time provided in 100-nanosecond intervals
|
|
||||||
|
|
||||||
time = ((double)nowTime/10000000.0); // time in seconds
|
QueryPerformanceFrequency(&clockFrequency);
|
||||||
*/
|
QueryPerformanceCounter(¤tTime);
|
||||||
/*
|
|
||||||
double pcFreq = 0.0;
|
|
||||||
__int64 counterStart = 0; // In C99 defined a standard 64-bit integer type named int64_t and unsigned version uint64_t in stdint.h.
|
|
||||||
|
|
||||||
//int64_t or uint64_t is type defined as long long or unsigned long long in C99's stdint.h.
|
time = (double)currentTime/clockFrequency*1000.0f; // time in miliseconds
|
||||||
|
|
||||||
//LARGE_INTEGER li; // Represents a 64-bit signed integer value
|
|
||||||
//li.QuadPart // A signed 64-bit integer
|
|
||||||
|
|
||||||
unsigned long long int li; // __int64, same as long long
|
|
||||||
if(!QueryPerformanceFrequency(&li)) return 0;
|
|
||||||
|
|
||||||
pcFreq = (double)(li)/1000.0;
|
|
||||||
|
|
||||||
QueryPerformanceCounter(&li);
|
|
||||||
counterStart = li;
|
|
||||||
|
|
||||||
unsigned long long int tm;
|
|
||||||
QueryPerformanceCounter(&tm);
|
|
||||||
time = (double)(tm - counterStart)/pcFreq;
|
|
||||||
*/
|
|
||||||
unsigned long long int tm, tf;
|
|
||||||
time = (double)(QueryPerformanceCounter(&tm)/QueryPerformanceFrequency(&tf)); // time in seconds
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__linux)
|
#if defined(__linux)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue