Skip to content

Commit

Permalink
Fix odd RageTimer inconsistencies causing broken framerate caps
Browse files Browse the repository at this point in the history
and probably some other stuff nobody caught because this is basically the difference between 0.0013333 seconds and 0.00130000 seconds
  • Loading branch information
poco0317 committed Dec 2, 2019
1 parent 27469ad commit 909e731
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 56 deletions.
21 changes: 1 addition & 20 deletions src/arch/ArchHooks/ArchHooks_MacOSX.mm
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,6 @@

#import <Foundation/Foundation.h>

static bool g_bTimerInitialized;
static std::chrono::steady_clock::time_point g_momentInitialized;

static void InitTimer()
{
if (g_bTimerInitialized)
return;
g_bTimerInitialized = true;
g_momentInitialized = std::chrono::steady_clock::now();
}

static bool IsFatalSignal( int signal )
{
switch( signal )
Expand Down Expand Up @@ -309,15 +298,7 @@ static bool DoEmergencyShutdown( int signal, siginfo_t *si, const ucontext_t *us

std::chrono::microseconds ArchHooks::GetChronoDurationSinceStart()
{
if (!g_bTimerInitialized)
InitTimer();

std::chrono::steady_clock::time_point now =
std::chrono::steady_clock::now();
auto us = std::chrono::duration_cast<std::chrono::microseconds>(
now - g_momentInitialized);

return us;
return std::chrono::microseconds(GetMicrosecondsSinceStart());
}

#include "RageUtil/File/RageFileManager.h"
Expand Down
22 changes: 1 addition & 21 deletions src/arch/ArchHooks/ArchHooks_Unix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,6 @@ extern "C" {

#include <chrono>

static bool g_bTimerInitialized;
static std::chrono::steady_clock::time_point g_momentInitialized;

static void
InitTimer()
{
if (g_bTimerInitialized)
return;
g_bTimerInitialized = true;
g_momentInitialized = std::chrono::steady_clock::now();
}

static bool
IsFatalSignal(int signal)
{
Expand Down Expand Up @@ -183,15 +171,7 @@ ArchHooks::GetMicrosecondsSinceStart()
std::chrono::microseconds
ArchHooks::GetChronoDurationSinceStart()
{
if (!g_bTimerInitialized)
InitTimer();

std::chrono::steady_clock::time_point now =
std::chrono::steady_clock::now();
auto us = std::chrono::duration_cast<std::chrono::microseconds>(
now - g_momentInitialized);

return us;
return std::chrono::microseconds(GetMicrosecondsSinceStart());
}
#else
int64_t
Expand Down
23 changes: 8 additions & 15 deletions src/arch/ArchHooks/ArchHooks_Win32Static.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,16 @@
#include <chrono>

static bool g_bTimerInitialized;
static std::chrono::steady_clock::time_point g_momentInitialized;

static void
InitTimer()
{
if (g_bTimerInitialized)
return;
g_bTimerInitialized = true;
g_momentInitialized = std::chrono::steady_clock::now();

// Set Windows clock resolution to 1ms
timeBeginPeriod(1);
}

int64_t
Expand All @@ -32,13 +33,7 @@ ArchHooks::GetMicrosecondsSinceStart()
if (!g_bTimerInitialized)
InitTimer();

std::chrono::steady_clock::time_point now =
std::chrono::steady_clock::now();
auto us = std::chrono::duration_cast<std::chrono::microseconds>(
now - g_momentInitialized);
int64_t ret = us.count();

return ret;
return timeGetTime() * int64_t(1000);
}

std::chrono::microseconds
Expand All @@ -47,12 +42,10 @@ ArchHooks::GetChronoDurationSinceStart()
if (!g_bTimerInitialized)
InitTimer();

std::chrono::steady_clock::time_point now =
std::chrono::steady_clock::now();
auto us = std::chrono::duration_cast<std::chrono::microseconds>(
now - g_momentInitialized);

return us;
// You may be thinking "why dont we use ::now() compared with a duration and
// return that?" well, that didnt work, is all i can say right now. maybe
// rewriting it later will work
return std::chrono::microseconds(GetMicrosecondsSinceStart());
}

static RString
Expand Down

0 comments on commit 909e731

Please sign in to comment.