From 3776d4a13f4752420484438e4efb60d433c1ffdd Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 15 Aug 2004 22:40:55 +0000 Subject: [PATCH] cleanup low-level time handling: only make adjustments to the clock that the arch really needs; Unix gettimeofday does not loop like Win32 timeGetTime so don't mess with it --- stepmania/src/arch/ArchHooks/ArchHooks_Unix.cpp | 5 ++++- stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp | 9 ++++++++- stepmania/src/arch/ArchHooks/ArchHooks_Xbox.cpp | 9 ++++++++- stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp | 5 ++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_Unix.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_Unix.cpp index 45b1d8a7a7..09e4db44e3 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_Unix.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_Unix.cpp @@ -143,7 +143,10 @@ static int64_t GetMicrosecondsSinceEpoch() int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate ) { static int64_t iStartTime = GetMicrosecondsSinceEpoch(); - return GetMicrosecondsSinceEpoch() - iStartTime; + int64_t ret = GetMicrosecondsSinceEpoch() - iStartTime; + if( bAccurate ) + ret = FixupTimeIfBackwards( ret ); + return ret; } /* diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp index 7c8e0da336..049cd8b989 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp @@ -203,7 +203,14 @@ int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate ) if( !g_bTimerInitialized ) InitTimer(); - return (timeGetTime() - g_iStartTime) * 1000; + int64_t ret = (timeGetTime() - g_iStartTime) * int64_t(1000); + if( bAccurate ) + { + ret = FixupTimeIfLooped( ret ); + ret = FixupTimeIfBackwards( ret ); + } + + return ret; } /* diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_Xbox.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_Xbox.cpp index b2b1d6011c..ef5b515b4b 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_Xbox.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_Xbox.cpp @@ -19,7 +19,14 @@ int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate ) if( !g_bTimerInitialized ) InitTimer(); - return (timeGetTime() - g_iStartTime) * 1000; + int64_t ret = (timeGetTime() - g_iStartTime) * int64_t(1000); + if( bAccurate ) + { + ret = FixupTimeIfLooped( ret ); + ret = FixupTimeIfBackwards( ret ); + } + + return ret; } ArchHooks_Xbox::ArchHooks_Xbox() diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp index 32b90868a3..1ada1bd552 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp @@ -298,7 +298,10 @@ static int64_t GetMicrosecondsSinceEpoch() int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate ) { static int64_t iStartTime = GetMicrosecondsSinceEpoch(); - return GetMicrosecondsSinceEpoch() - iStartTime; + int64_t ret = GetMicrosecondsSinceEpoch() - iStartTime; + if( bAccurate ) + ret = FixupTimeIfBackwards( ret ); + return ret; } /*