[libcamera-devel] [PATCH v1 1/3] utils: timer: Allow Timer::start to use utils::Duration
Naushir Patuck
naush at raspberrypi.com
Tue Mar 22 14:16:33 CET 2022
Add an overload of the Timer::start member function to accept a utils::Duration
type for the timer duration.
Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
include/libcamera/base/timer.h | 2 ++
src/libcamera/base/timer.cpp | 14 ++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/include/libcamera/base/timer.h b/include/libcamera/base/timer.h
index 09f1d3229bd5..f42a8cfd4d6d 100644
--- a/include/libcamera/base/timer.h
+++ b/include/libcamera/base/timer.h
@@ -14,6 +14,7 @@
#include <libcamera/base/object.h>
#include <libcamera/base/signal.h>
+#include <libcamera/base/utils.h>
namespace libcamera {
@@ -27,6 +28,7 @@ public:
void start(unsigned int msec) { start(std::chrono::milliseconds(msec)); }
void start(std::chrono::milliseconds duration);
+ void start(utils::Duration duration);
void start(std::chrono::steady_clock::time_point deadline);
void stop();
bool isRunning() const;
diff --git a/src/libcamera/base/timer.cpp b/src/libcamera/base/timer.cpp
index 187336e3a1a4..3ff526aea8ae 100644
--- a/src/libcamera/base/timer.cpp
+++ b/src/libcamera/base/timer.cpp
@@ -85,6 +85,20 @@ void Timer::start(std::chrono::milliseconds duration)
start(utils::clock::now() + duration);
}
+/**
+ * \brief Start or restart the timer with a timeout of \a duration
+ * \param[in] duration The timer duration given by \a utils::Duration
+ *
+ * If the timer is already running it will be stopped and restarted.
+ *
+ * \context This function is \threadbound.
+ */
+void Timer::start(utils::Duration duration)
+{
+ auto msec = std::chrono::duration_cast<std::chrono::milliseconds>(duration);
+ start(utils::clock::now() + msec);
+}
+
/**
* \brief Start or restart the timer with a \a deadline
* \param[in] deadline The timer deadline
--
2.25.1
More information about the libcamera-devel
mailing list