{"id":9109,"url":"https://patchwork.libcamera.org/api/1.1/patches/9109/?format=json","web_url":"https://patchwork.libcamera.org/patch/9109/","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":"<20200731153320.58107-12-jacopo@jmondi.org>","date":"2020-07-31T15:33:12","name":"[libcamera-devel,v5,11/19] libcamera: camera: Zero streams before validate()","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"545bd4bf8ae3665763470609785832fe029b9d17","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/1.1/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/9109/mbox/","series":[{"id":1171,"url":"https://patchwork.libcamera.org/api/1.1/series/1171/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1171","date":"2020-07-31T15:33:01","name":"[libcamera-devel,v5,01/19] libcamera: ipu3: Rename mbusCodesToInfo","version":5,"mbox":"https://patchwork.libcamera.org/series/1171/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/9109/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/9109/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 D60AEBD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 31 Jul 2020 15:30:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 958C261EAB;\n\tFri, 31 Jul 2020 17:30:03 +0200 (CEST)","from relay10.mail.gandi.net (relay10.mail.gandi.net\n\t[217.70.178.230])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7607161A14\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 31 Jul 2020 17:30:01 +0200 (CEST)","from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay10.mail.gandi.net (Postfix) with ESMTPSA id 0C526240010;\n\tFri, 31 Jul 2020 15:29:59 +0000 (UTC)"],"From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Fri, 31 Jul 2020 17:33:12 +0200","Message-Id":"<20200731153320.58107-12-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.27.0","In-Reply-To":"<20200731153320.58107-1-jacopo@jmondi.org>","References":"<20200731153320.58107-1-jacopo@jmondi.org>","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH v5 11/19] libcamera: camera: Zero streams\n\tbefore validate()","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>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"The current implementation of the Camera::configure() method zeroes the\nstream pointers assigned to the StreamConfiguration items before calling\nthe pipeline handler configure() operation, just after the\nCameraConfiguration has been validated.\n\nThis discards the stream assignment performed at pipeline hander\nvalidation time, requiring platforms that need to perform that early\nassignment to maintain the association in place with custom data\nstructures.\n\nTo allow pipeline handlers to use StreamConfiguration::setStream() at\nvalidate() time, zero the stream assignment before calling validate().\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/libcamera/camera.cpp | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)","diff":"diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex 69a1b4428e3f..ca88c48b2830 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -753,6 +753,9 @@ int Camera::configure(CameraConfiguration *config)\n \tif (ret < 0)\n \t\treturn ret;\n \n+\tfor (auto it : *config)\n+\t\tit.setStream(nullptr);\n+\n \tif (config->validate() != CameraConfiguration::Valid) {\n \t\tLOG(Camera, Error)\n \t\t\t<< \"Can't configure camera with invalid configuration\";\n@@ -763,7 +766,6 @@ int Camera::configure(CameraConfiguration *config)\n \n \tfor (unsigned int index = 0; index < config->size(); ++index) {\n \t\tStreamConfiguration &cfg = config->at(index);\n-\t\tcfg.setStream(nullptr);\n \t\tmsg << \" (\" << index << \") \" << cfg.toString();\n \t}\n \n","prefixes":["libcamera-devel","v5","11/19"]}