[libcamera-devel] [PATCH 2/9] libcamera: timer: Don't reset deadline after time out
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Oct 7 04:58:15 CEST 2019
Hi Jacopo,
On Sun, Oct 06, 2019 at 08:25:11PM +0200, Jacopo Mondi wrote:
> On Sun, Oct 06, 2019 at 08:32:19AM +0300, Laurent Pinchart wrote:
> > 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();
>
> weird, i would have expected this to be deadline < utils::time_point()
utils::timer_point() is a "zero" time point, corresponding to the epoch.
The Timer class use this as a magic value to denote a non-running timer.
That's what this patch removes.
> Anyway
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
>
> > + return running_;
> > }
> >
> > /**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list