[libcamera-devel] [PATCH 3/5] Documentation: application-developer: Recommend unique_ptr for CameraManager

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Aug 25 21:32:05 CEST 2021


Hi Kieran,

Thank you for the patch.

On Wed, Aug 25, 2021 at 11:29:35AM +0100, Kieran Bingham wrote:
> The CameraManager object should be deleted when it is no longer used to
> prevent it from leaking.
> 
> When the application closes, the memory will be released, but it would
> show up in reports from memory validation tools such as valgrind if not
> handled correctly.
> 
> Recommend best-practices in the guide and ensure it is automatically
> cleaned up when the CameraManager goes out of scope.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  Documentation/guides/application-developer.rst | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/guides/application-developer.rst b/Documentation/guides/application-developer.rst
> index 442d8e6a512e..e2ed79d5173e 100644
> --- a/Documentation/guides/application-developer.rst
> +++ b/Documentation/guides/application-developer.rst
> @@ -61,11 +61,15 @@ variable for the camera to support the event call back later:
>     std::shared_ptr<Camera> camera;
>  
>  Create a Camera Manager instance at the beginning of the main function, and then
> -start it. An application should only create a single Camera Manager instance.
> +start it. An application must only create a single Camera Manager instance.
> +
> +The CameraManager can be stored in a unique_ptr to automate deleting the
> +instance when it is no longer used, but care must be taken to ensure all cameras

Line wrap.

> +are released explicitly.

I'd add "before this happens" at the end.

>  
>  .. code:: cpp
>  
> -   CameraManager *cm = new CameraManager();
> +   std::unique_ptr<CameraManager> cm = std::make_unique<CameraManager>();
>     cm->start();
>  
>  During the application initialization, the Camera Manager is started to
> @@ -560,6 +564,9 @@ uses, so needs to do the following:
>  
>     return 0;
>  
> +In this instance the CameraManager will automatically be deleted by the
> +unique_ptr implementation when it goes out of scope.

This feels a bit like teaching C++ :-) I probably wouldn't have included
this here, but I don't mind. Either way,

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

> +
>  Build and run instructions
>  --------------------------
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list