[libcamera-devel,08/15] android: camera_device: Return Camera as shared_ptr

Message ID 20201005104649.10812-9-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • CameraStream refactoring
Related show

Commit Message

Laurent Pinchart Oct. 5, 2020, 10:46 a.m. UTC
From: Jacopo Mondi <jacopo@jmondi.org>

Return the Camera wrapped by the CameraDevice as a shared_ptr.
This will be required to construct the FrameBuffer allocator in
the CameraStream class.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/android/camera_device.h        | 2 +-
 src/android/camera_hal_manager.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Laurent Pinchart Oct. 5, 2020, 12:17 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Mon, Oct 05, 2020 at 01:46:42PM +0300, Laurent Pinchart wrote:
> From: Jacopo Mondi <jacopo@jmondi.org>
> 
> Return the Camera wrapped by the CameraDevice as a shared_ptr.
> This will be required to construct the FrameBuffer allocator in
> the CameraStream class.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/android/camera_device.h        | 2 +-
>  src/android/camera_hal_manager.cpp | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> index 826023b453f7..777d1a35e801 100644
> --- a/src/android/camera_device.h
> +++ b/src/android/camera_device.h
> @@ -49,7 +49,7 @@ public:
>  
>  	unsigned int id() const { return id_; }
>  	camera3_device_t *camera3Device() { return &camera3Device_; }
> -	const libcamera::Camera *camera() const { return camera_.get(); }
> +	std::shared_ptr<libcamera::Camera> camera() const { return camera_; }
>  	libcamera::CameraConfiguration *cameraConfiguration() const
>  	{
>  		return config_.get();
> diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
> index 05b474010b1d..e29eddbb5590 100644
> --- a/src/android/camera_hal_manager.cpp
> +++ b/src/android/camera_hal_manager.cpp
> @@ -155,7 +155,7 @@ void CameraHalManager::cameraRemoved(std::shared_ptr<Camera> cam)
>  
>  	auto iter = std::find_if(cameras_.begin(), cameras_.end(),
>  				 [&cam](std::shared_ptr<CameraDevice> &camera) {
> -					 return cam.get() == camera->camera();
> +					 return cam.get() == camera->camera().get();

Maybe just return cam == camera->camera() ?

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

>  				 });
>  	if (iter == cameras_.end())
>  		return;
Kieran Bingham Oct. 6, 2020, 10:17 a.m. UTC | #2
Hi Jacopo,

On 05/10/2020 13:17, Laurent Pinchart wrote:
> Hi Jacopo,
> 
> Thank you for the patch.
> 
> On Mon, Oct 05, 2020 at 01:46:42PM +0300, Laurent Pinchart wrote:
>> From: Jacopo Mondi <jacopo@jmondi.org>
>>
>> Return the Camera wrapped by the CameraDevice as a shared_ptr.
>> This will be required to construct the FrameBuffer allocator in
>> the CameraStream class.

Sounds good to me.

>>
>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
>> ---
>>  src/android/camera_device.h        | 2 +-
>>  src/android/camera_hal_manager.cpp | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
>> index 826023b453f7..777d1a35e801 100644
>> --- a/src/android/camera_device.h
>> +++ b/src/android/camera_device.h
>> @@ -49,7 +49,7 @@ public:
>>  
>>  	unsigned int id() const { return id_; }
>>  	camera3_device_t *camera3Device() { return &camera3Device_; }
>> -	const libcamera::Camera *camera() const { return camera_.get(); }
>> +	std::shared_ptr<libcamera::Camera> camera() const { return camera_; }
>>  	libcamera::CameraConfiguration *cameraConfiguration() const
>>  	{
>>  		return config_.get();
>> diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
>> index 05b474010b1d..e29eddbb5590 100644
>> --- a/src/android/camera_hal_manager.cpp
>> +++ b/src/android/camera_hal_manager.cpp
>> @@ -155,7 +155,7 @@ void CameraHalManager::cameraRemoved(std::shared_ptr<Camera> cam)
>>  
>>  	auto iter = std::find_if(cameras_.begin(), cameras_.end(),
>>  				 [&cam](std::shared_ptr<CameraDevice> &camera) {
>> -					 return cam.get() == camera->camera();
>> +					 return cam.get() == camera->camera().get();
> 
> Maybe just return cam == camera->camera() ?
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

With the simplified comparison:

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> 
>>  				 });
>>  	if (iter == cameras_.end())
>>  		return;
>

Patch

diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 826023b453f7..777d1a35e801 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -49,7 +49,7 @@  public:
 
 	unsigned int id() const { return id_; }
 	camera3_device_t *camera3Device() { return &camera3Device_; }
-	const libcamera::Camera *camera() const { return camera_.get(); }
+	std::shared_ptr<libcamera::Camera> camera() const { return camera_; }
 	libcamera::CameraConfiguration *cameraConfiguration() const
 	{
 		return config_.get();
diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
index 05b474010b1d..e29eddbb5590 100644
--- a/src/android/camera_hal_manager.cpp
+++ b/src/android/camera_hal_manager.cpp
@@ -155,7 +155,7 @@  void CameraHalManager::cameraRemoved(std::shared_ptr<Camera> cam)
 
 	auto iter = std::find_if(cameras_.begin(), cameras_.end(),
 				 [&cam](std::shared_ptr<CameraDevice> &camera) {
-					 return cam.get() == camera->camera();
+					 return cam.get() == camera->camera().get();
 				 });
 	if (iter == cameras_.end())
 		return;