From 34d986d1ec342e84db0302d28b7d8bc98c2cd054 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 5 Jul 2021 18:48:38 +0300 Subject: cam: Store camera session pointer in CamApp class 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 Reviewed-by: Kieran Bingham --- src/cam/camera_session.cpp | 5 ----- src/cam/main.cpp | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp index 1fb7c1b6..7bb75e86 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 b13230c3..2c6500a5 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_; std::unique_ptr config_; + std::unique_ptr session_; + EventLoop loop_; bool strictFormats_; @@ -127,6 +130,9 @@ int CamApp::init(int argc, char **argv) cleanup(); return ret; } + + session_ = std::make_unique(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; } -- cgit v1.2.1