Browse Source

Merge pull request #56497 from Pineapple/qpc-tweaks

Windows: Simplify QueryPerformanceCounter usage
Rémi Verschelde 3 years ago
parent
commit
277a159c48
1 changed files with 6 additions and 11 deletions
  1. 6 11
      platform/windows/os_windows.cpp

+ 6 - 11
platform/windows/os_windows.cpp

@@ -184,12 +184,8 @@ void OS_Windows::initialize() {
 	NetSocketPosix::make_default();
 	NetSocketPosix::make_default();
 
 
 	// We need to know how often the clock is updated
 	// We need to know how often the clock is updated
-	if (!QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second))
-		ticks_per_second = 1000;
-	// If timeAtGameStart is 0 then we get the time since
-	// the start of the computer when we call GetGameTime()
-	ticks_start = 0;
-	ticks_start = get_ticks_usec();
+	QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second);
+	QueryPerformanceCounter((LARGE_INTEGER *)&ticks_start);
 
 
 	// set minimum resolution for periodic timers, otherwise Sleep(n) may wait at least as
 	// set minimum resolution for periodic timers, otherwise Sleep(n) may wait at least as
 	//  long as the windows scheduler resolution (~16-30ms) even for calls like Sleep(1)
 	//  long as the windows scheduler resolution (~16-30ms) even for calls like Sleep(1)
@@ -369,8 +365,10 @@ uint64_t OS_Windows::get_ticks_usec() const {
 	uint64_t ticks;
 	uint64_t ticks;
 
 
 	// This is the number of clock ticks since start
 	// This is the number of clock ticks since start
-	if (!QueryPerformanceCounter((LARGE_INTEGER *)&ticks))
-		ticks = (UINT64)timeGetTime();
+	QueryPerformanceCounter((LARGE_INTEGER *)&ticks);
+	// Subtract the ticks at game start to get
+	// the ticks since the game started
+	ticks -= ticks_start;
 
 
 	// Divide by frequency to get the time in seconds
 	// Divide by frequency to get the time in seconds
 	// original calculation shown below is subject to overflow
 	// original calculation shown below is subject to overflow
@@ -390,9 +388,6 @@ uint64_t OS_Windows::get_ticks_usec() const {
 	// seconds
 	// seconds
 	time += seconds * 1000000L;
 	time += seconds * 1000000L;
 
 
-	// Subtract the time at game start to get
-	// the time since the game started
-	time -= ticks_start;
 	return time;
 	return time;
 }
 }