summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibCore/ElapsedTimer.cpp25
-rw-r--r--Userland/Libraries/LibCore/ElapsedTimer.h10
-rw-r--r--Userland/Libraries/LibWeb/HighResolutionTime/Performance.cpp3
3 files changed, 12 insertions, 26 deletions
diff --git a/Userland/Libraries/LibCore/ElapsedTimer.cpp b/Userland/Libraries/LibCore/ElapsedTimer.cpp
index d37398fee5..02f1802622 100644
--- a/Userland/Libraries/LibCore/ElapsedTimer.cpp
+++ b/Userland/Libraries/LibCore/ElapsedTimer.cpp
@@ -7,8 +7,6 @@
#include <AK/Assertions.h>
#include <AK/Time.h>
#include <LibCore/ElapsedTimer.h>
-#include <sys/time.h>
-#include <time.h>
namespace Core {
@@ -22,34 +20,25 @@ ElapsedTimer ElapsedTimer::start_new()
void ElapsedTimer::start()
{
m_valid = true;
- timespec now_spec;
- clock_gettime(m_precise ? CLOCK_MONOTONIC : CLOCK_MONOTONIC_COARSE, &now_spec);
- m_origin_time.tv_sec = now_spec.tv_sec;
- m_origin_time.tv_usec = now_spec.tv_nsec / 1000;
+ m_origin_time = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse();
}
void ElapsedTimer::reset()
{
m_valid = false;
- m_origin_time = { 0, 0 };
+ m_origin_time = {};
}
-int ElapsedTimer::elapsed() const
+i64 ElapsedTimer::elapsed() const
{
- VERIFY(is_valid());
- struct timeval now;
- timespec now_spec;
- clock_gettime(m_precise ? CLOCK_MONOTONIC : CLOCK_MONOTONIC_COARSE, &now_spec);
- now.tv_sec = now_spec.tv_sec;
- now.tv_usec = now_spec.tv_nsec / 1000;
- struct timeval diff;
- timeval_sub(now, m_origin_time, diff);
- return diff.tv_sec * 1000 + diff.tv_usec / 1000;
+ return elapsed_time().to_milliseconds();
}
Time ElapsedTimer::elapsed_time() const
{
- return Time::from_milliseconds(elapsed());
+ VERIFY(is_valid());
+ auto now = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse();
+ return now - m_origin_time;
}
}
diff --git a/Userland/Libraries/LibCore/ElapsedTimer.h b/Userland/Libraries/LibCore/ElapsedTimer.h
index 1e62087dc1..16cb2a32fb 100644
--- a/Userland/Libraries/LibCore/ElapsedTimer.h
+++ b/Userland/Libraries/LibCore/ElapsedTimer.h
@@ -7,7 +7,6 @@
#pragma once
#include <AK/Time.h>
-#include <sys/time.h>
namespace Core {
@@ -23,17 +22,16 @@ public:
bool is_valid() const { return m_valid; }
void start();
void reset();
- int elapsed() const;
+
+ i64 elapsed() const; // milliseconds
Time elapsed_time() const;
- const struct timeval& origin_time() const { return m_origin_time; }
+ Time const& origin_time() const { return m_origin_time; }
private:
+ Time m_origin_time {};
bool m_precise { false };
bool m_valid { false };
- struct timeval m_origin_time {
- 0, 0
- };
};
}
diff --git a/Userland/Libraries/LibWeb/HighResolutionTime/Performance.cpp b/Userland/Libraries/LibWeb/HighResolutionTime/Performance.cpp
index d73c1321e2..67ec50f83d 100644
--- a/Userland/Libraries/LibWeb/HighResolutionTime/Performance.cpp
+++ b/Userland/Libraries/LibWeb/HighResolutionTime/Performance.cpp
@@ -39,8 +39,7 @@ JS::GCPtr<NavigationTiming::PerformanceTiming> Performance::timing()
double Performance::time_origin() const
{
- auto origin = m_timer.origin_time();
- return (origin.tv_sec * 1000.0) + (origin.tv_usec / 1000.0);
+ return static_cast<double>(m_timer.origin_time().to_milliseconds());
}
}