[libcamera-devel] [PATCH 23/30] cam: Move camera session creation and monitoring setup to run()
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jul 12 17:53:42 CEST 2021
On 07/07/2021 03:19, Laurent Pinchart wrote:
> Move creationg of the camera session and setup of the hotplug monitoring
s/creationg/creation/
> 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 open return
s/open/upon/
> from run().
>
> This change allows merging two different code blocks related to hotplug
> monitoring.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/cam/main.cpp | 38 ++++++++++++++++++--------------------
> 1 file changed, 18 insertions(+), 20 deletions(-)
>
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index 03e62f305f24..cba0793ac39b 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();
> }
>
>
More information about the libcamera-devel
mailing list