[libcamera-devel,2/3] libcamera: camera_sensor: Store subdevice in std::unique_ptr

Message ID 20200502135355.22757-3-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: Prepare to support more complex sensors
Related show

Commit Message

Laurent Pinchart May 2, 2020, 1:53 p.m. UTC
Avoid the need for a manual delete in the destructor by using a unique
pointer.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/camera_sensor.cpp       | 5 ++---
 src/libcamera/include/camera_sensor.h | 3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)

Comments

Niklas Söderlund May 3, 2020, 1:29 a.m. UTC | #1
Hi Laurent,

Thanks for your work.

On 2020-05-02 16:53:54 +0300, Laurent Pinchart wrote:
> Avoid the need for a manual delete in the destructor by using a unique
> pointer.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
>  src/libcamera/camera_sensor.cpp       | 5 ++---
>  src/libcamera/include/camera_sensor.h | 3 ++-
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index ab2bed561cc6..9cfb3847dda6 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -133,7 +133,6 @@ LOG_DEFINE_CATEGORY(CameraSensor);
>  CameraSensor::CameraSensor(const MediaEntity *entity)
>  	: entity_(entity), properties_(properties::properties)
>  {
> -	subdev_ = new V4L2Subdevice(entity);
>  }
>  
>  /**
> @@ -141,7 +140,6 @@ CameraSensor::CameraSensor(const MediaEntity *entity)
>   */
>  CameraSensor::~CameraSensor()
>  {
> -	delete subdev_;
>  }
>  
>  /**
> @@ -197,7 +195,8 @@ int CameraSensor::init()
>  	else
>  		model_ = entityName;
>  
> -	/* Open the subdev. */
> +	/* Create and open the subdev. */
> +	subdev_ = std::make_unique<V4L2Subdevice>(entity_);
>  	ret = subdev_->open();
>  	if (ret < 0)
>  		return ret;
> diff --git a/src/libcamera/include/camera_sensor.h b/src/libcamera/include/camera_sensor.h
> index f39ea96dc77a..92cd90353e72 100644
> --- a/src/libcamera/include/camera_sensor.h
> +++ b/src/libcamera/include/camera_sensor.h
> @@ -7,6 +7,7 @@
>  #ifndef __LIBCAMERA_CAMERA_SENSOR_H__
>  #define __LIBCAMERA_CAMERA_SENSOR_H__
>  
> +#include <memory>
>  #include <string>
>  #include <vector>
>  
> @@ -68,7 +69,7 @@ protected:
>  
>  private:
>  	const MediaEntity *entity_;
> -	V4L2Subdevice *subdev_;
> +	std::unique_ptr<V4L2Subdevice> subdev_;
>  	std::string model_;
>  
>  	std::vector<unsigned int> mbusCodes_;
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index ab2bed561cc6..9cfb3847dda6 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -133,7 +133,6 @@  LOG_DEFINE_CATEGORY(CameraSensor);
 CameraSensor::CameraSensor(const MediaEntity *entity)
 	: entity_(entity), properties_(properties::properties)
 {
-	subdev_ = new V4L2Subdevice(entity);
 }
 
 /**
@@ -141,7 +140,6 @@  CameraSensor::CameraSensor(const MediaEntity *entity)
  */
 CameraSensor::~CameraSensor()
 {
-	delete subdev_;
 }
 
 /**
@@ -197,7 +195,8 @@  int CameraSensor::init()
 	else
 		model_ = entityName;
 
-	/* Open the subdev. */
+	/* Create and open the subdev. */
+	subdev_ = std::make_unique<V4L2Subdevice>(entity_);
 	ret = subdev_->open();
 	if (ret < 0)
 		return ret;
diff --git a/src/libcamera/include/camera_sensor.h b/src/libcamera/include/camera_sensor.h
index f39ea96dc77a..92cd90353e72 100644
--- a/src/libcamera/include/camera_sensor.h
+++ b/src/libcamera/include/camera_sensor.h
@@ -7,6 +7,7 @@ 
 #ifndef __LIBCAMERA_CAMERA_SENSOR_H__
 #define __LIBCAMERA_CAMERA_SENSOR_H__
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -68,7 +69,7 @@  protected:
 
 private:
 	const MediaEntity *entity_;
-	V4L2Subdevice *subdev_;
+	std::unique_ptr<V4L2Subdevice> subdev_;
 	std::string model_;
 
 	std::vector<unsigned int> mbusCodes_;