mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:37:45 +00:00
LibCore+LibWeb: Use AK::Time instead of timeval in Core::ElapsedTimer
This removes the direct dependency on sys/time.h from ElapsedTimer, and makes the code a lot cleaner by using the helpers from AK::Time for time math and getting the current timestamp.
This commit is contained in:
parent
82a01bf32f
commit
4afa6e264c
3 changed files with 12 additions and 26 deletions
|
@ -7,8 +7,6 @@
|
||||||
#include <AK/Assertions.h>
|
#include <AK/Assertions.h>
|
||||||
#include <AK/Time.h>
|
#include <AK/Time.h>
|
||||||
#include <LibCore/ElapsedTimer.h>
|
#include <LibCore/ElapsedTimer.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
@ -22,34 +20,25 @@ ElapsedTimer ElapsedTimer::start_new()
|
||||||
void ElapsedTimer::start()
|
void ElapsedTimer::start()
|
||||||
{
|
{
|
||||||
m_valid = true;
|
m_valid = true;
|
||||||
timespec now_spec;
|
m_origin_time = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse();
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ElapsedTimer::reset()
|
void ElapsedTimer::reset()
|
||||||
{
|
{
|
||||||
m_valid = false;
|
m_valid = false;
|
||||||
m_origin_time = { 0, 0 };
|
m_origin_time = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
int ElapsedTimer::elapsed() const
|
i64 ElapsedTimer::elapsed() const
|
||||||
{
|
{
|
||||||
VERIFY(is_valid());
|
return elapsed_time().to_milliseconds();
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Time ElapsedTimer::elapsed_time() const
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/Time.h>
|
#include <AK/Time.h>
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
@ -23,17 +22,16 @@ public:
|
||||||
bool is_valid() const { return m_valid; }
|
bool is_valid() const { return m_valid; }
|
||||||
void start();
|
void start();
|
||||||
void reset();
|
void reset();
|
||||||
int elapsed() const;
|
|
||||||
|
i64 elapsed() const; // milliseconds
|
||||||
Time elapsed_time() const;
|
Time elapsed_time() const;
|
||||||
|
|
||||||
const struct timeval& origin_time() const { return m_origin_time; }
|
Time const& origin_time() const { return m_origin_time; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Time m_origin_time {};
|
||||||
bool m_precise { false };
|
bool m_precise { false };
|
||||||
bool m_valid { false };
|
bool m_valid { false };
|
||||||
struct timeval m_origin_time {
|
|
||||||
0, 0
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,7 @@ JS::GCPtr<NavigationTiming::PerformanceTiming> Performance::timing()
|
||||||
|
|
||||||
double Performance::time_origin() const
|
double Performance::time_origin() const
|
||||||
{
|
{
|
||||||
auto origin = m_timer.origin_time();
|
return static_cast<double>(m_timer.origin_time().to_milliseconds());
|
||||||
return (origin.tv_sec * 1000.0) + (origin.tv_usec / 1000.0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue