[libcamera-devel] [PATCH 2/9] libcamera: timer: Don't reset deadline after time out
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Oct 6 07:32:19 CEST 2019
Users of the Timer class may benefit from retrieving the timer deadline
after it times out. This is currently not possible as the deadline is
reset to 0 when the timer times out or is stopped. Fix this by not
resetting the deadline, and adding a new running_ field to the Timer
class to implement isRunning().
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
include/libcamera/timer.h | 1 +
src/libcamera/timer.cpp | 8 ++++----
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h
index 09f426a59993..3540efb41b6f 100644
--- a/include/libcamera/timer.h
+++ b/include/libcamera/timer.h
@@ -39,6 +39,7 @@ private:
void registerTimer();
void unregisterTimer();
+ bool running_;
std::chrono::steady_clock::time_point deadline_;
};
diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
index 34410bab0fb0..8c74e1015e43 100644
--- a/src/libcamera/timer.cpp
+++ b/src/libcamera/timer.cpp
@@ -43,7 +43,7 @@ LOG_DEFINE_CATEGORY(Timer)
* \param[in] parent The parent Object
*/
Timer::Timer(Object *parent)
- : Object(parent)
+ : Object(parent), running_(false)
{
}
@@ -89,17 +89,17 @@ void Timer::start(std::chrono::milliseconds duration)
void Timer::stop()
{
unregisterTimer();
-
- deadline_ = utils::time_point();
}
void Timer::registerTimer()
{
thread()->eventDispatcher()->registerTimer(this);
+ running_ = true;
}
void Timer::unregisterTimer()
{
+ running_ = false;
thread()->eventDispatcher()->unregisterTimer(this);
}
@@ -109,7 +109,7 @@ void Timer::unregisterTimer()
*/
bool Timer::isRunning() const
{
- return deadline_ != utils::time_point();
+ return running_;
}
/**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list