summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-07 02:00:40 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-22 17:13:51 +0300
commit3d5093911396558b03b7f9815b3c467afc426f82 (patch)
tree483acfb3a52eb7f73d8825453bf116de3e2e0de9 /src
parente548e583cc6452144dc41d57acea9ceddbc6ab89 (diff)
cam: Move camera session creation and monitoring setup to run()
Move creation of the camera session and setup of the hotplug monitoring from the init() function to the run() function, to group all the code that performs operations based on command line options in a single place. The cleanup() call on session creation failure isn't required anymore, as the cleanup() function is called unconditionally upon return from run(). This change allows merging two different code blocks related to hotplug monitoring. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r--src/cam/main.cpp38
1 files changed, 18 insertions, 20 deletions
diff --git a/src/cam/main.cpp b/src/cam/main.cpp
index 03e62f30..cba0793a 100644
--- a/src/cam/main.cpp
+++ b/src/cam/main.cpp
@@ -84,26 +84,6 @@ int CamApp::init(int argc, char **argv)
return ret;
}
- if (options_.isSet(OptCamera)) {
- session_ = std::make_unique<CameraSession>(cm_.get(), options_);
- if (!session_->isValid()) {
- std::cout << "Failed to create camera session" << std::endl;
- cleanup();
- return -EINVAL;
- }
-
- std::cout << "Using camera " << session_->camera()->id()
- << std::endl;
-
- session_->captureDone.connect(this, &CamApp::captureDone);
- }
-
- if (options_.isSet(OptMonitor)) {
- cm_->cameraAdded.connect(this, &CamApp::cameraAdded);
- cm_->cameraRemoved.connect(this, &CamApp::cameraRemoved);
- std::cout << "Monitoring new hotplug and unplug events" << std::endl;
- }
-
return 0;
}
@@ -275,6 +255,19 @@ int CamApp::run()
}
}
+ if (options_.isSet(OptCamera)) {
+ session_ = std::make_unique<CameraSession>(cm_.get(), options_);
+ if (!session_->isValid()) {
+ std::cout << "Failed to create camera session" << std::endl;
+ return -EINVAL;
+ }
+
+ std::cout << "Using camera " << session_->camera()->id()
+ << std::endl;
+
+ session_->captureDone.connect(this, &CamApp::captureDone);
+ }
+
if (options_.isSet(OptListControls)) {
ret = listControls();
if (ret)
@@ -312,7 +305,12 @@ int CamApp::run()
}
if (options_.isSet(OptMonitor)) {
+ std::cout << "Monitoring new hotplug and unplug events" << std::endl;
std::cout << "Press Ctrl-C to interrupt" << std::endl;
+
+ cm_->cameraAdded.connect(this, &CamApp::cameraAdded);
+ cm_->cameraRemoved.connect(this, &CamApp::cameraRemoved);
+
loop_.exec();
}