[libcamera-devel] [PATCH v2 17/30] cam: Store camera session pointer in CamApp class
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jul 12 23:56:32 CEST 2021
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 at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at 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;
}
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list