diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-06 07:03:34 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-07 06:02:19 +0300 |
commit | 36c35345fa3ba4eb7c7652caae6eecb44ba37770 (patch) | |
tree | edd85ce15e485267dbc65fa8c6a8f8b4cbf81ba6 | |
parent | e85f42110f411ec9c9b30d7f8f1a57c02e9cb01f (diff) |
libcamera: timer: Don't reset deadline after time out
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@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | include/libcamera/timer.h | 1 | ||||
-rw-r--r-- | 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 09f426a5..3540efb4 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 34410bab..8c74e101 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_; } /** |