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
 | 
						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…
	
	Add table
		Add a link
		
	
		Reference in a new issue