forked from quickshell/quickshell
		
	core/elapsedtimer: add ElapsedTimer
This commit is contained in:
		
							parent
							
								
									37fecfc990
								
							
						
					
					
						commit
						be237b6ab5
					
				
					 4 changed files with 69 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -27,6 +27,7 @@ qt_add_library(quickshell-core STATIC
 | 
			
		|||
	transformwatcher.cpp
 | 
			
		||||
	boundcomponent.cpp
 | 
			
		||||
	model.cpp
 | 
			
		||||
	elapsedtimer.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
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",
 | 
			
		||||
	"boundcomponent.hpp",
 | 
			
		||||
	"model.hpp",
 | 
			
		||||
	"elapsedtimer.hpp",
 | 
			
		||||
]
 | 
			
		||||
-----
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue