[RFC PATCH v2 07/16] apps: lc-compliance: Optimize `std::shared_ptr` usage

Paul Elder paul.elder at ideasonboard.com
Thu Jan 23 01:01:39 CET 2025


On Tue, Jan 14, 2025 at 06:22:22PM +0000, Barnabás Pőcze wrote:
> Avoid unnecessary copies and try to move construct `std::shared_ptr`
> whenever possible.
> 
> Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/apps/lc-compliance/helpers/capture.cpp | 8 ++++----
>  src/apps/lc-compliance/main.cpp            | 4 +---
>  2 files changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/src/apps/lc-compliance/helpers/capture.cpp b/src/apps/lc-compliance/helpers/capture.cpp
> index 90c1530ba..d1dafb6cf 100644
> --- a/src/apps/lc-compliance/helpers/capture.cpp
> +++ b/src/apps/lc-compliance/helpers/capture.cpp
> @@ -12,8 +12,8 @@
>  using namespace libcamera;
>  
>  Capture::Capture(std::shared_ptr<Camera> camera)
> -	: loop_(nullptr), camera_(camera),
> -	  allocator_(std::make_unique<FrameBufferAllocator>(camera))
> +	: loop_(nullptr), camera_(std::move(camera)),
> +	  allocator_(std::make_unique<FrameBufferAllocator>(camera_))
>  {
>  }
>  
> @@ -72,7 +72,7 @@ void Capture::stop()
>  /* CaptureBalanced */
>  
>  CaptureBalanced::CaptureBalanced(std::shared_ptr<Camera> camera)
> -	: Capture(camera)
> +	: Capture(std::move(camera))
>  {
>  }
>  
> @@ -144,7 +144,7 @@ void CaptureBalanced::requestComplete(Request *request)
>  /* CaptureUnbalanced */
>  
>  CaptureUnbalanced::CaptureUnbalanced(std::shared_ptr<Camera> camera)
> -	: Capture(camera)
> +	: Capture(std::move(camera))
>  {
>  }
>  
> diff --git a/src/apps/lc-compliance/main.cpp b/src/apps/lc-compliance/main.cpp
> index 3f1d2a61b..98f2573d0 100644
> --- a/src/apps/lc-compliance/main.cpp
> +++ b/src/apps/lc-compliance/main.cpp
> @@ -50,8 +50,6 @@ static void listCameras(CameraManager *cm)
>  
>  static int initCamera(CameraManager *cm, OptionsParser::Options options)
>  {
> -	std::shared_ptr<Camera> camera;
> -
>  	int ret = cm->start();
>  	if (ret) {
>  		std::cout << "Failed to start camera manager: "
> @@ -66,7 +64,7 @@ static int initCamera(CameraManager *cm, OptionsParser::Options options)
>  	}
>  
>  	const std::string &cameraId = options[OptCamera];
> -	camera = cm->get(cameraId);
> +	std::shared_ptr<Camera> camera = cm->get(cameraId);
>  	if (!camera) {
>  		std::cout << "Camera " << cameraId << " not found, available cameras:" << std::endl;
>  		listCameras(cm);
> -- 
> 2.48.0
> 
> 


More information about the libcamera-devel mailing list