From patchwork Sun Feb 24 17:14:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 605 Return-Path: Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A82B4601E2 for ; Sun, 24 Feb 2019 18:14:26 +0100 (CET) X-Halon-ID: a2404782-3857-11e9-a58a-005056917f90 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id a2404782-3857-11e9-a58a-005056917f90; Sun, 24 Feb 2019 18:14:25 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Sun, 24 Feb 2019 18:14:04 +0100 Message-Id: <20190224171407.7856-2-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> References: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 1/4] cam: free allocated buffers when done capturing X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2019 17:14:26 -0000 The allocated buffers needs to be freed once the application is done with them. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 9b67ab75a6a1663e..b034eb25429abeb3 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -163,7 +163,8 @@ static int capture() Request *request = camera->createRequest(); if (!request) { std::cerr << "Can't create request" << std::endl; - return -ENOMEM; + ret = -ENOMEM; + goto out; } std::map map; @@ -171,13 +172,13 @@ static int capture() ret = request->setBuffers(map); if (ret < 0) { std::cerr << "Can't set buffers for request" << std::endl; - return ret; + goto out; } ret = camera->queueRequest(request); if (ret < 0) { std::cerr << "Can't queue request" << std::endl; - return ret; + goto out; } } @@ -187,6 +188,9 @@ static int capture() ret = loop->exec(); camera->stop(); +out: + camera->freeBuffers(); + return ret; } From patchwork Sun Feb 24 17:14:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 606 Return-Path: Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 40E71610BA for ; Sun, 24 Feb 2019 18:14:27 +0100 (CET) X-Halon-ID: a2bd8b8d-3857-11e9-a58a-005056917f90 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id a2bd8b8d-3857-11e9-a58a-005056917f90; Sun, 24 Feb 2019 18:14:25 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Sun, 24 Feb 2019 18:14:05 +0100 Message-Id: <20190224171407.7856-3-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> References: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 2/4] cam: improve error checking when capturing X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2019 17:14:28 -0000 The return value when start() and stop() the camera should be checked and handled. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index b034eb25429abeb3..30267970a2c8485f 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -183,11 +183,18 @@ static int capture() } std::cout << "Capture until user interrupts by SIGINT" << std::endl; - camera->start(); + + ret = camera->start(); + if (ret) { + std::cout << "Failed to start capture" << std::endl; + goto out; + } ret = loop->exec(); - camera->stop(); + ret = camera->stop(); + if (ret) + std::cout << "Failed to stop capture" << std::endl; out: camera->freeBuffers(); From patchwork Sun Feb 24 17:14:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 607 Return-Path: Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D142B610B7 for ; Sun, 24 Feb 2019 18:14:27 +0100 (CET) X-Halon-ID: a32c588e-3857-11e9-a58a-005056917f90 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id a32c588e-3857-11e9-a58a-005056917f90; Sun, 24 Feb 2019 18:14:26 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Sun, 24 Feb 2019 18:14:06 +0100 Message-Id: <20190224171407.7856-4-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> References: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 3/4] cam: fix printing of camera name X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2019 17:14:28 -0000 Since commit c8c546fe99a343c1 ("cam: options: Add option type handling to options parser") introduced type handling for options the context the option is read became important. When reading the camera option for printing there is no explicit context to print it as a string and instead the int context was chosen resulting in: $ cam --camera foo Camera 0 not found While the expected output is: $ cam --camera foo Camera foo not found Fix this by providing the correct context for the camera option when printing it. Fixes: c8c546fe99a343c1 ("cam: options: Add option type handling to options parser") Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 30267970a2c8485f..522d2f0d3373dc25 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -233,7 +233,8 @@ int main(int argc, char **argv) if (options.isSet(OptCamera)) { camera = cm->get(options[OptCamera]); if (!camera) { - std::cout << "Camera " << options[OptCamera] + std::cout << "Camera " + << std::string(options[OptCamera]) << " not found" << std::endl; goto out; } From patchwork Sun Feb 24 17:14:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 608 Return-Path: Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 56A16601E2 for ; Sun, 24 Feb 2019 18:14:28 +0100 (CET) X-Halon-ID: a3a417a2-3857-11e9-a58a-005056917f90 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id a3a417a2-3857-11e9-a58a-005056917f90; Sun, 24 Feb 2019 18:14:27 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Sun, 24 Feb 2019 18:14:07 +0100 Message-Id: <20190224171407.7856-5-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> References: <20190224171407.7856-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 4/4] cam: Improve when usage information is printed X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2019 17:14:28 -0000 Running the cam tool without any options results in the tool to exit with EXIT_FAILURE but no usage being printed, this is confusing. Improve this by also printing the usage text. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 522d2f0d3373dc25..90859fe04abfb944 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -67,12 +67,9 @@ static int parseOptions(int argc, char *argv[]) parser.addOption(OptList, OptionNone, "List all cameras", "list"); options = parser.parse(argc, argv); - if (!options.valid()) - return -EINVAL; - - if (argc == 1 || options.isSet(OptHelp)) { + if (!options.valid() || options.isSet(OptHelp)) { parser.usage(); - return 1; + return !options.valid() ? -EINVAL : -EINTR; } return 0; @@ -207,7 +204,7 @@ int main(int argc, char **argv) ret = parseOptions(argc, argv); if (ret < 0) - return EXIT_FAILURE; + return ret == -EINTR ? 0 : EXIT_FAILURE; CameraManager *cm = CameraManager::instance();