[libcamera-devel] [PATCH v2 4/8] android: CameraDevice: Take shared_ptr in constructor

Hirokazu Honda hiroh at chromium.org
Wed Mar 24 08:07:53 CET 2021


CameraDevice takes the ownership of Camera. Therefore,
shared_ptr would rather be used than const shared_ptr&.

Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/android/camera_device.cpp | 12 +++++++-----
 src/android/camera_device.h   |  4 ++--
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index d0955de7..c0630e53 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -312,9 +312,10 @@ CameraDevice::Camera3RequestDescriptor::~Camera3RequestDescriptor()
  * back to the framework using the designated callbacks.
  */

-CameraDevice::CameraDevice(unsigned int id, const std::shared_ptr<Camera> &camera)
-	: id_(id), running_(false), camera_(camera), staticMetadata_(nullptr),
-	  facing_(CAMERA_FACING_FRONT), orientation_(0)
+CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera> camera)
+	: id_(id), running_(false), camera_(std::move(camera)),
+	  staticMetadata_(nullptr), facing_(CAMERA_FACING_FRONT),
+	  orientation_(0)
 {
 	camera_->requestCompleted.connect(this, &CameraDevice::requestComplete);

@@ -351,9 +352,10 @@ CameraDevice::~CameraDevice()
 }

 std::unique_ptr<CameraDevice> CameraDevice::create(unsigned int id,
-						   const std::shared_ptr<Camera> &cam)
+						   std::shared_ptr<Camera> cam)
 {
-	return std::unique_ptr<CameraDevice>(new CameraDevice(id, cam));
+	return std::unique_ptr<CameraDevice>(
+		new CameraDevice(id, std::move(cam)));
 }

 /*
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 8be7f305..555b33e7 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -33,7 +33,7 @@ class CameraDevice : protected libcamera::Loggable
 {
 public:
 	static std::unique_ptr<CameraDevice> create(unsigned int id,
-						    const std::shared_ptr<libcamera::Camera> &cam);
+						    std::shared_ptr<libcamera::Camera> cam);
 	~CameraDevice();

 	int initialize();
@@ -66,7 +66,7 @@ protected:
 	std::string logPrefix() const override;

 private:
-	CameraDevice(unsigned int id, const std::shared_ptr<libcamera::Camera> &camera);
+	CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> camera);

 	struct Camera3RequestDescriptor {
 		Camera3RequestDescriptor(libcamera::Camera *camera,
--
2.31.0.291.g576ba9dcdaf-goog


More information about the libcamera-devel mailing list