[libcamera-devel,17/30] cam: Store camera session pointer in CamApp class
diff mbox series

Message ID 20210707021941.20804-18-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
Move the local CameraSession variable from the CamApp::run() function to
a member variable of the CamApp class, created in CamApp::init(). This
is a first step towards moving code to the CameraSession class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/cam/camera_session.cpp |  5 -----
 src/cam/main.cpp           | 16 ++++++++++++----
 2 files changed, 12 insertions(+), 9 deletions(-)

Comments

Kieran Bingham July 12, 2021, 3:33 p.m. UTC | #1
On 07/07/2021 03:19, Laurent Pinchart wrote:
> Move the local CameraSession variable from the CamApp::run() function to
> a member variable of the CamApp class, created in CamApp::init(). This
> is a first step towards moving code to the CameraSession class.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

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

> ---
>  src/cam/camera_session.cpp |  5 -----
>  src/cam/main.cpp           | 16 ++++++++++++----
>  2 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
> index 1fb7c1b6ad5d..7bb75e86eab5 100644
> --- a/src/cam/camera_session.cpp
> +++ b/src/cam/camera_session.cpp
> @@ -34,11 +34,6 @@ int CameraSession::start(const OptionsParser::Options &options)
>  	captureLimit_ = options[OptCapture].toInteger();
>  	printMetadata_ = options.isSet(OptMetadata);
>  
> -	if (!camera_) {
> -		std::cout << "Can't capture without a camera" << std::endl;
> -		return -ENODEV;
> -	}
> -
>  	ret = camera_->configure(config_);
>  	if (ret < 0) {
>  		std::cout << "Failed to configure camera" << std::endl;
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index b13230c374ad..2c6500a5682b 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -51,8 +51,11 @@ private:
>  	static CamApp *app_;
>  	OptionsParser::Options options_;
>  	CameraManager *cm_;
> +
>  	std::shared_ptr<Camera> camera_;
>  	std::unique_ptr<libcamera::CameraConfiguration> config_;
> +	std::unique_ptr<CameraSession> session_;
> +
>  	EventLoop loop_;
>  
>  	bool strictFormats_;
> @@ -127,6 +130,9 @@ int CamApp::init(int argc, char **argv)
>  			cleanup();
>  			return ret;
>  		}
> +
> +		session_ = std::make_unique<CameraSession>(camera_, config_.get());
> +		session_->captureDone.connect(this, &CamApp::captureDone);
>  	}
>  
>  	if (options_.isSet(OptMonitor)) {
> @@ -369,10 +375,12 @@ int CamApp::run()
>  	}
>  
>  	if (options_.isSet(OptCapture)) {
> -		CameraSession session(camera_, config_.get());
> -		session.captureDone.connect(this, &CamApp::captureDone);
> +		if (!camera_) {
> +			std::cout << "Can't capture without a camera" << std::endl;
> +			return -ENODEV;
> +		}
>  
> -		ret = session.start(options_);
> +		ret = session_->start(options_);
>  		if (ret) {
>  			std::cout << "Failed to start camera session" << std::endl;
>  			return ret;
> @@ -380,7 +388,7 @@ int CamApp::run()
>  
>  		loop_.exec();
>  
> -		session.stop();
> +		session_->stop();
>  		return 0;
>  	}
>  
>

Patch
diff mbox series

diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
index 1fb7c1b6ad5d..7bb75e86eab5 100644
--- a/src/cam/camera_session.cpp
+++ b/src/cam/camera_session.cpp
@@ -34,11 +34,6 @@  int CameraSession::start(const OptionsParser::Options &options)
 	captureLimit_ = options[OptCapture].toInteger();
 	printMetadata_ = options.isSet(OptMetadata);
 
-	if (!camera_) {
-		std::cout << "Can't capture without a camera" << std::endl;
-		return -ENODEV;
-	}
-
 	ret = camera_->configure(config_);
 	if (ret < 0) {
 		std::cout << "Failed to configure camera" << std::endl;
diff --git a/src/cam/main.cpp b/src/cam/main.cpp
index b13230c374ad..2c6500a5682b 100644
--- a/src/cam/main.cpp
+++ b/src/cam/main.cpp
@@ -51,8 +51,11 @@  private:
 	static CamApp *app_;
 	OptionsParser::Options options_;
 	CameraManager *cm_;
+
 	std::shared_ptr<Camera> camera_;
 	std::unique_ptr<libcamera::CameraConfiguration> config_;
+	std::unique_ptr<CameraSession> session_;
+
 	EventLoop loop_;
 
 	bool strictFormats_;
@@ -127,6 +130,9 @@  int CamApp::init(int argc, char **argv)
 			cleanup();
 			return ret;
 		}
+
+		session_ = std::make_unique<CameraSession>(camera_, config_.get());
+		session_->captureDone.connect(this, &CamApp::captureDone);
 	}
 
 	if (options_.isSet(OptMonitor)) {
@@ -369,10 +375,12 @@  int CamApp::run()
 	}
 
 	if (options_.isSet(OptCapture)) {
-		CameraSession session(camera_, config_.get());
-		session.captureDone.connect(this, &CamApp::captureDone);
+		if (!camera_) {
+			std::cout << "Can't capture without a camera" << std::endl;
+			return -ENODEV;
+		}
 
-		ret = session.start(options_);
+		ret = session_->start(options_);
 		if (ret) {
 			std::cout << "Failed to start camera session" << std::endl;
 			return ret;
@@ -380,7 +388,7 @@  int CamApp::run()
 
 		loop_.exec();
 
-		session.stop();
+		session_->stop();
 		return 0;
 	}