forked from quickshell/quickshell
core/elapsedtimer: add ElapsedTimer
This commit is contained in:
parent
37fecfc990
commit
be237b6ab5
|
@ -27,6 +27,7 @@ qt_add_library(quickshell-core STATIC
|
||||||
transformwatcher.cpp
|
transformwatcher.cpp
|
||||||
boundcomponent.cpp
|
boundcomponent.cpp
|
||||||
model.cpp
|
model.cpp
|
||||||
|
elapsedtimer.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set_source_files_properties(main.cpp PROPERTIES COMPILE_DEFINITIONS GIT_REVISION="${GIT_REVISION}")
|
set_source_files_properties(main.cpp PROPERTIES COMPILE_DEFINITIONS GIT_REVISION="${GIT_REVISION}")
|
||||||
|
|
22
src/core/elapsedtimer.cpp
Normal file
22
src/core/elapsedtimer.cpp
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#include "elapsedtimer.hpp"
|
||||||
|
|
||||||
|
#include <qtypes.h>
|
||||||
|
|
||||||
|
ElapsedTimer::ElapsedTimer() { this->timer.start(); }
|
||||||
|
|
||||||
|
qreal ElapsedTimer::elapsed() { return static_cast<qreal>(this->elapsedNs()) / 1000000000.0; }
|
||||||
|
|
||||||
|
qreal ElapsedTimer::restart() { return static_cast<qreal>(this->restartNs()) / 1000000000.0; }
|
||||||
|
|
||||||
|
qint64 ElapsedTimer::elapsedMs() { return this->timer.elapsed(); }
|
||||||
|
|
||||||
|
qint64 ElapsedTimer::restartMs() { return this->timer.restart(); }
|
||||||
|
|
||||||
|
qint64 ElapsedTimer::elapsedNs() { return this->timer.nsecsElapsed(); }
|
||||||
|
|
||||||
|
qint64 ElapsedTimer::restartNs() {
|
||||||
|
// see qelapsedtimer.cpp
|
||||||
|
auto old = this->timer;
|
||||||
|
this->timer.start();
|
||||||
|
return old.durationTo(this->timer).count();
|
||||||
|
}
|
45
src/core/elapsedtimer.hpp
Normal file
45
src/core/elapsedtimer.hpp
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <qelapsedtimer.h>
|
||||||
|
#include <qobject.h>
|
||||||
|
#include <qqmlintegration.h>
|
||||||
|
#include <qtmetamacros.h>
|
||||||
|
#include <qtypes.h>
|
||||||
|
|
||||||
|
///! Measures time between events
|
||||||
|
/// The ElapsedTimer measures time since its last restart, and is useful
|
||||||
|
/// for determining the time between events that don't supply it.
|
||||||
|
class ElapsedTimer: public QObject {
|
||||||
|
Q_OBJECT;
|
||||||
|
QML_ELEMENT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ElapsedTimer();
|
||||||
|
|
||||||
|
/// Return the number of seconds since the timer was last
|
||||||
|
/// started or restarted, with nanosecond precision.
|
||||||
|
Q_INVOKABLE qreal elapsed();
|
||||||
|
|
||||||
|
/// Restart the timer, returning the number of seconds since
|
||||||
|
/// the timer was last started or restarted, with nanosecond precision.
|
||||||
|
Q_INVOKABLE qreal restart();
|
||||||
|
|
||||||
|
/// Return the number of milliseconds since the timer was last
|
||||||
|
/// started or restarted.
|
||||||
|
Q_INVOKABLE qint64 elapsedMs();
|
||||||
|
|
||||||
|
/// Restart the timer, returning the number of milliseconds since
|
||||||
|
/// the timer was last started or restarted.
|
||||||
|
Q_INVOKABLE qint64 restartMs();
|
||||||
|
|
||||||
|
/// Return the number of nanoseconds since the timer was last
|
||||||
|
/// started or restarted.
|
||||||
|
Q_INVOKABLE qint64 elapsedNs();
|
||||||
|
|
||||||
|
/// Restart the timer, returning the number of nanoseconds since
|
||||||
|
/// the timer was last started or restarted.
|
||||||
|
Q_INVOKABLE qint64 restartNs();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QElapsedTimer timer;
|
||||||
|
};
|
|
@ -19,5 +19,6 @@ headers = [
|
||||||
"transformwatcher.hpp",
|
"transformwatcher.hpp",
|
||||||
"boundcomponent.hpp",
|
"boundcomponent.hpp",
|
||||||
"model.hpp",
|
"model.hpp",
|
||||||
|
"elapsedtimer.hpp",
|
||||||
]
|
]
|
||||||
-----
|
-----
|
||||||
|
|
Loading…
Reference in a new issue