[libcamera-devel,20/30] cam: Use std::unique_ptr<> to manager CameraManager
diff mbox series

Message ID 20210707021941.20804-21-laurent.pinchart@ideasonboard.com
State Superseded
Headers show
Series
  • Multi-camera support in the cam application
Related show

Commit Message

Laurent Pinchart July 7, 2021, 2:19 a.m. UTC
Store the CameraManager instance in a unique_ptr to simplify memory
management and avoid leaks.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/cam/main.cpp | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Kieran Bingham July 12, 2021, 3:45 p.m. UTC | #1
Hi Laurent,

$SUBJECT: s/manager/manage/

On 07/07/2021 03:19, Laurent Pinchart wrote:
> Store the CameraManager instance in a unique_ptr to simplify memory
> management and avoid leaks.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  src/cam/main.cpp | 13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
> 
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index 8ed5e841a1e9..2ef26353e712 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -25,7 +25,6 @@ class CamApp
>  {
>  public:
>  	CamApp();
> -	~CamApp();
>  
>  	static CamApp *instance();
>  
> @@ -49,8 +48,8 @@ private:
>  
>  	static CamApp *app_;
>  	OptionsParser::Options options_;
> -	CameraManager *cm_;
>  
> +	std::unique_ptr<CameraManager> cm_;
>  	std::unique_ptr<CameraSession> session_;
>  
>  	EventLoop loop_;
> @@ -59,16 +58,10 @@ private:
>  CamApp *CamApp::app_ = nullptr;
>  
>  CamApp::CamApp()
> -	: cm_(nullptr)

\o/

>  {
>  	CamApp::app_ = this;
>  }
>  
> -CamApp::~CamApp()
> -{
> -	delete cm_;

\o/

Gotta love these wins.

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

> -}
> -
>  CamApp *CamApp::instance()
>  {
>  	return CamApp::app_;
> @@ -82,7 +75,7 @@ int CamApp::init(int argc, char **argv)
>  	if (ret < 0)
>  		return ret;
>  
> -	cm_ = new CameraManager();
> +	cm_ = std::make_unique<CameraManager>();
>  
>  	ret = cm_->start();
>  	if (ret) {
> @@ -92,7 +85,7 @@ int CamApp::init(int argc, char **argv)
>  	}
>  
>  	if (options_.isSet(OptCamera)) {
> -		session_ = std::make_unique<CameraSession>(cm_, options_);
> +		session_ = std::make_unique<CameraSession>(cm_.get(), options_);
>  		if (!session_->isValid()) {
>  			std::cout << "Failed to create camera session" << std::endl;
>  			cleanup();
>

Patch
diff mbox series

diff --git a/src/cam/main.cpp b/src/cam/main.cpp
index 8ed5e841a1e9..2ef26353e712 100644
--- a/src/cam/main.cpp
+++ b/src/cam/main.cpp
@@ -25,7 +25,6 @@  class CamApp
 {
 public:
 	CamApp();
-	~CamApp();
 
 	static CamApp *instance();
 
@@ -49,8 +48,8 @@  private:
 
 	static CamApp *app_;
 	OptionsParser::Options options_;
-	CameraManager *cm_;
 
+	std::unique_ptr<CameraManager> cm_;
 	std::unique_ptr<CameraSession> session_;
 
 	EventLoop loop_;
@@ -59,16 +58,10 @@  private:
 CamApp *CamApp::app_ = nullptr;
 
 CamApp::CamApp()
-	: cm_(nullptr)
 {
 	CamApp::app_ = this;
 }
 
-CamApp::~CamApp()
-{
-	delete cm_;
-}
-
 CamApp *CamApp::instance()
 {
 	return CamApp::app_;
@@ -82,7 +75,7 @@  int CamApp::init(int argc, char **argv)
 	if (ret < 0)
 		return ret;
 
-	cm_ = new CameraManager();
+	cm_ = std::make_unique<CameraManager>();
 
 	ret = cm_->start();
 	if (ret) {
@@ -92,7 +85,7 @@  int CamApp::init(int argc, char **argv)
 	}
 
 	if (options_.isSet(OptCamera)) {
-		session_ = std::make_unique<CameraSession>(cm_, options_);
+		session_ = std::make_unique<CameraSession>(cm_.get(), options_);
 		if (!session_->isValid()) {
 			std::cout << "Failed to create camera session" << std::endl;
 			cleanup();