{"id":12836,"url":"https://patchwork.libcamera.org/api/1.1/patches/12836/?format=json","web_url":"https://patchwork.libcamera.org/patch/12836/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20210707021941.20804-24-laurent.pinchart@ideasonboard.com>","date":"2021-07-07T02:19:34","name":"[libcamera-devel,23/30] cam: Move camera session creation and monitoring setup to run()","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"5180065a783b0713109e7c4b870ac28121226705","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/1.1/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/12836/mbox/","series":[{"id":2213,"url":"https://patchwork.libcamera.org/api/1.1/series/2213/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2213","date":"2021-07-07T02:19:12","name":"Multi-camera support in the cam application","version":1,"mbox":"https://patchwork.libcamera.org/series/2213/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/12836/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/12836/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8E04CC3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Jul 2021 02:20:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 423D66850E;\n\tWed,  7 Jul 2021 04:20:50 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 453BC684F3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Jul 2021 04:20:40 +0200 (CEST)","from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 48353466\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Jul 2021 04:20:39 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PagYm80g\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1625624439;\n\tbh=D8wN2nj1ewx9zVjBdW0GnoNDyqWT7j2zLjQvBXBWu8Y=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=PagYm80gNgqudfcZcv0g6QN2VM0zIBu0DMw/A+56pINoXOdlADl6g24KKyQHIcbHB\n\tdp88W6Lf1jlwzUtaeuMkkyM3TVJmPXWPHAiqa1/8rhZteNa0cO7rDtV7/055L9kuik\n\tHM1l0Zm3UMqyF3+EvSz08bVMc5WnKRAlNfwx9y/E=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed,  7 Jul 2021 05:19:34 +0300","Message-Id":"<20210707021941.20804-24-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.31.1","In-Reply-To":"<20210707021941.20804-1-laurent.pinchart@ideasonboard.com>","References":"<20210707021941.20804-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 23/30] cam: Move camera session creation\n\tand monitoring setup to run()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Move creationg of the camera session and setup of the hotplug monitoring\nfrom the init() function to the run() function, to group all the code\nthat performs operations based on command line options in a single\nplace. The cleanup() call on session creation failure isn't required\nanymore, as the cleanup() function is called unconditionally open return\nfrom run().\n\nThis change allows merging two different code blocks related to hotplug\nmonitoring.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/cam/main.cpp | 38 ++++++++++++++++++--------------------\n 1 file changed, 18 insertions(+), 20 deletions(-)","diff":"diff --git a/src/cam/main.cpp b/src/cam/main.cpp\nindex 03e62f305f24..cba0793ac39b 100644\n--- a/src/cam/main.cpp\n+++ b/src/cam/main.cpp\n@@ -84,26 +84,6 @@ int CamApp::init(int argc, char **argv)\n \t\treturn ret;\n \t}\n \n-\tif (options_.isSet(OptCamera)) {\n-\t\tsession_ = std::make_unique<CameraSession>(cm_.get(), options_);\n-\t\tif (!session_->isValid()) {\n-\t\t\tstd::cout << \"Failed to create camera session\" << std::endl;\n-\t\t\tcleanup();\n-\t\t\treturn -EINVAL;\n-\t\t}\n-\n-\t\tstd::cout << \"Using camera \" << session_->camera()->id()\n-\t\t\t  << std::endl;\n-\n-\t\tsession_->captureDone.connect(this, &CamApp::captureDone);\n-\t}\n-\n-\tif (options_.isSet(OptMonitor)) {\n-\t\tcm_->cameraAdded.connect(this, &CamApp::cameraAdded);\n-\t\tcm_->cameraRemoved.connect(this, &CamApp::cameraRemoved);\n-\t\tstd::cout << \"Monitoring new hotplug and unplug events\" << std::endl;\n-\t}\n-\n \treturn 0;\n }\n \n@@ -275,6 +255,19 @@ int CamApp::run()\n \t\t}\n \t}\n \n+\tif (options_.isSet(OptCamera)) {\n+\t\tsession_ = std::make_unique<CameraSession>(cm_.get(), options_);\n+\t\tif (!session_->isValid()) {\n+\t\t\tstd::cout << \"Failed to create camera session\" << std::endl;\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\n+\t\tstd::cout << \"Using camera \" << session_->camera()->id()\n+\t\t\t  << std::endl;\n+\n+\t\tsession_->captureDone.connect(this, &CamApp::captureDone);\n+\t}\n+\n \tif (options_.isSet(OptListControls)) {\n \t\tret = listControls();\n \t\tif (ret)\n@@ -312,7 +305,12 @@ int CamApp::run()\n \t}\n \n \tif (options_.isSet(OptMonitor)) {\n+\t\tstd::cout << \"Monitoring new hotplug and unplug events\" << std::endl;\n \t\tstd::cout << \"Press Ctrl-C to interrupt\" << std::endl;\n+\n+\t\tcm_->cameraAdded.connect(this, &CamApp::cameraAdded);\n+\t\tcm_->cameraRemoved.connect(this, &CamApp::cameraRemoved);\n+\n \t\tloop_.exec();\n \t}\n \n","prefixes":["libcamera-devel","23/30"]}