{"id":12998,"url":"https://patchwork.libcamera.org/api/1.1/patches/12998/?format=json","web_url":"https://patchwork.libcamera.org/patch/12998/","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":"<20210715211459.19373-27-laurent.pinchart@ideasonboard.com>","date":"2021-07-15T21:14:52","name":"[libcamera-devel,v3,26/33] cam: Move camera session creation and monitoring setup to run()","commit_ref":null,"pull_url":null,"state":"accepted","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/12998/mbox/","series":[{"id":2242,"url":"https://patchwork.libcamera.org/api/1.1/series/2242/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2242","date":"2021-07-15T21:14:26","name":"Multi-camera support in the cam application","version":3,"mbox":"https://patchwork.libcamera.org/series/2242/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/12998/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/12998/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 CFE37C322C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jul 2021 21:15:31 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5CD226853A;\n\tThu, 15 Jul 2021 23:15:31 +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 72CAA68550\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jul 2021 23:15:13 +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 096CE56B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jul 2021 23:15:12 +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=\"TUj4uxfp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1626383713;\n\tbh=axJWEf8Y922RXJb0H+KNMyUQkg0I2E+veG4L1mqU0xY=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=TUj4uxfp7b+HvIvdODfDl6fm3P24R5F1A76ZGj5P1yhGZyPmLwXGwlHvMi2EuGPC3\n\tCaCdrPqdQhamiuDAw/mynX6IODVVyfWGh3kDMIXrKDjQGi0CHxhzMOj+2WAf6R/Izw\n\tvRZQnOyTNmrJ66W3kkmP2oqifVDNpVwp651QdF/c=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Fri, 16 Jul 2021 00:14:52 +0300","Message-Id":"<20210715211459.19373-27-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.31.1","In-Reply-To":"<20210715211459.19373-1-laurent.pinchart@ideasonboard.com>","References":"<20210715211459.19373-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v3 26/33] cam: Move camera session\n\tcreation and 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 creation 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 upon 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>\nReviewed-by: Kieran Bingham <kieran.bingham@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","v3","26/33"]}