summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/Timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/Timer.cpp')
-rw-r--r--Source/Core/Common/Src/Timer.cpp85
1 files changed, 84 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/Timer.cpp b/Source/Core/Common/Src/Timer.cpp
index 641a28e8ae..28eb67c33b 100644
--- a/Source/Core/Common/Src/Timer.cpp
+++ b/Source/Core/Common/Src/Timer.cpp
@@ -25,6 +25,7 @@
#include "Common.h"
#include "Timer.h"
+#include "StringUtil.h"
#ifdef __GNUC__
u32 timeGetTime()
@@ -38,8 +39,15 @@ u32 timeGetTime()
namespace Common
{
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Initiate, Start, Stop, and Update the time
+// ---------------
+
+// Set initial values for the class
Timer::Timer(void)
- : m_LastTime(0)
+ : m_LastTime(0), m_StartTime(0), m_Running(false)
{
Update();
@@ -48,20 +56,90 @@ Timer::Timer(void)
#endif
}
+// Write the starting time
+void Timer::Start()
+{
+ m_StartTime = timeGetTime();
+ m_Running = true;
+}
+// Stop the timer
+void Timer::Stop()
+{
+ // Write the final time
+ m_LastTime = timeGetTime();
+ m_Running = false;
+}
+
+// Update the last time variable
void Timer::Update(void)
{
m_LastTime = timeGetTime();
//TODO(ector) - QPF
}
+/////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Get time difference and elapsed time
+// ---------------
+
+// Get the number of milliseconds since the last Update()
s64 Timer::GetTimeDifference(void)
{
return(timeGetTime() - m_LastTime);
}
+// Add the time difference since the last Update() to the starting time
+void Timer::AddTimeDifference()
+{
+ m_StartTime += GetTimeDifference();
+}
+
+// Get the time elapsed since the Start()
+u64 Timer::GetTimeElapsed(void)
+{
+ /* If we have not started yet return 1 (because then I don't have to change the FPS
+ calculation in CoreRerecording.cpp */
+ if (m_StartTime == 0) return 1;
+
+ // Rrturn the final timer time if the timer is stopped
+ if (!m_Running) return (m_LastTime - m_StartTime);
+ return (timeGetTime() - m_StartTime);
+}
+
+// Get the formattet time elapsed since the Start()
+std::string Timer::GetTimeElapsedFormatted(void)
+{
+ // If we have not started yet, return zero
+ if(m_StartTime == 0) return "00:00:00:000";
+
+ // The number of milliseconds since the start, use a different value if the timer is stopped
+ u32 Milliseconds;
+ if(m_Running)
+ Milliseconds = timeGetTime() - m_StartTime;
+ else
+ Milliseconds = m_LastTime - m_StartTime;
+ // Seconds
+ u32 Seconds = Milliseconds / 1000;
+ // Minutes
+ u32 Minutes = Seconds / 60;
+ // Hours
+ u32 Hours = Minutes / 60;
+
+ std::string TmpStr = StringFromFormat("%02i:%02i:%02i:%03i", Hours, Minutes % 60, Seconds % 60, Milliseconds % 1000);
+ return TmpStr;
+}
+
+/////////////////////////////////////
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Get current time
+// ---------------
void Timer::IncreaseResolution()
{
#ifdef _WIN32
@@ -86,6 +164,7 @@ void _time64(u64* t)
#endif
+// Get the number of seconds since January 1 1970
u64 Timer::GetTimeSinceJan1970(void)
{
time_t ltime;
@@ -106,6 +185,7 @@ u64 Timer::GetLocalTimeSinceJan1970(void)
return (u64)(sysTime + tzDiff);
}
+// Return the current time formatted as Minutes:Seconds:Milliseconds in the form 00:00:000
std::string Timer::GetTimeFormatted(void)
{
struct timeb tp;
@@ -115,4 +195,7 @@ std::string Timer::GetTimeFormatted(void)
return std::string(temp);
}
+/////////////////////////////////////
+
+
} // end of namespace Common