[libcamera-devel] [PATCH v2 1/3] libcamera: timer: Stop timer when it is deleted

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jul 1 01:41:45 CEST 2019


Hi Niklas,

Thank you for the patch.

On Sun, Jun 30, 2019 at 06:25:12PM +0200, Niklas Söderlund wrote:
> If a timer is running while it's deleted it is still register with the
> event dispatcher. This causes a segmentation fault when the timer
> time-out and its signal is emitted. Fix this my stopping the timer when
> it's deleted.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

Good catch.

Conditioned by another patch that extends the Timer tests to catch this,

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  include/libcamera/timer.h | 1 +
>  src/libcamera/timer.cpp   | 5 +++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h
> index 97dcc01f493dc70d..f082339b1fed9de7 100644
> --- a/include/libcamera/timer.h
> +++ b/include/libcamera/timer.h
> @@ -17,6 +17,7 @@ class Timer
>  {
>  public:
>  	Timer();
> +	~Timer();
>  
>  	void start(unsigned int msec);
>  	void stop();
> diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
> index 1cce45085c61be2f..0dcb4e767be30b32 100644
> --- a/src/libcamera/timer.cpp
> +++ b/src/libcamera/timer.cpp
> @@ -43,6 +43,11 @@ Timer::Timer()
>  {
>  }
>  
> +Timer::~Timer()
> +{
> +	stop();
> +}
> +
>  /**
>   * \brief Start or restart the timer with a timeout of \a msec
>   * \param[in] msec The timer duration in milliseconds

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list