From patchwork Fri Aug 14 10:45:07 2020 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: 9325 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 17478BD87D for ; Fri, 14 Aug 2020 10:45:22 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E13C56163B; Fri, 14 Aug 2020 12:45:21 +0200 (CEST) Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id B9723613D6 for ; Fri, 14 Aug 2020 12:45:19 +0200 (CEST) X-Halon-ID: 3edc9712-de1b-11ea-a39b-005056917f90 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de [84.172.82.168]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id 3edc9712-de1b-11ea-a39b-005056917f90; Fri, 14 Aug 2020 12:45:19 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Fri, 14 Aug 2020 12:45:07 +0200 Message-Id: <20200814104509.189023-2-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> References: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 1/3] libcamera: pipeline_handler: Add const version of cameraData() X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add a version of camerData() that returns a const pointer and mark it as a const operation. The assert in the non-const version of the function already enforces that a std::map::at() operation would always succeed so there is no change in operation from the non-const version. Signed-off-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- * Changes since v1 - Do not change current implementation add a new version that returns a const pointer. --- include/libcamera/internal/pipeline_handler.h | 1 + src/libcamera/pipeline_handler.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index 22e629a8401d1e4e..c1873df00b6a2a28 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -97,6 +97,7 @@ protected: virtual int queueRequestDevice(Camera *camera, Request *request) = 0; CameraData *cameraData(const Camera *camera); + const CameraData *cameraData(const Camera *camera) const; CameraManager *manager_; diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index ccd45edc847b9e3f..73c51972a225a247 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -601,6 +601,19 @@ CameraData *PipelineHandler::cameraData(const Camera *camera) return cameraData_[camera].get(); } +/** + * \brief Retrieve the pipeline-specific data associated with a Camera + * \param[in] camera The camera whose data to retrieve + * \sa cameraData() + * \return A const pointer to the pipeline-specific data passed to + * registerCamera(). + */ +const CameraData *PipelineHandler::cameraData(const Camera *camera) const +{ + ASSERT(cameraData_.count(camera)); + return cameraData_.at(camera).get(); +} + /** * \var PipelineHandler::manager_ * \brief The Camera manager associated with the pipeline handler From patchwork Fri Aug 14 10:45:08 2020 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: 9326 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id DD858BD87D for ; Fri, 14 Aug 2020 10:45:22 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 486516160D; Fri, 14 Aug 2020 12:45:22 +0200 (CEST) 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 985C2613B4 for ; Fri, 14 Aug 2020 12:45:20 +0200 (CEST) X-Halon-ID: 3f350834-de1b-11ea-a39b-005056917f90 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de [84.172.82.168]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id 3f350834-de1b-11ea-a39b-005056917f90; Fri, 14 Aug 2020 12:45:19 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Fri, 14 Aug 2020 12:45:08 +0200 Message-Id: <20200814104509.189023-3-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> References: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 2/3] libcamera: pipeline_handler: Mark controls() and properties() as const operations X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Reading the controls and properties does not modify the pipeline's state and can be marked as const operations. Signed-off-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- * Changes since v1 - Spelling in commit message. --- include/libcamera/internal/pipeline_handler.h | 4 ++-- src/libcamera/pipeline_handler.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index c1873df00b6a2a28..a4e1b529c4611df7 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -68,8 +68,8 @@ public: bool lock(); void unlock(); - const ControlInfoMap &controls(Camera *camera); - const ControlList &properties(Camera *camera); + const ControlInfoMap &controls(const Camera *camera) const; + const ControlList &properties(const Camera *camera) const; virtual CameraConfiguration *generateConfiguration(Camera *camera, const StreamRoles &roles) = 0; diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index 73c51972a225a247..918aea1e8328abc8 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -257,9 +257,9 @@ void PipelineHandler::unlock() * \context This function is \threadsafe. * \return A ControlInfoMap listing the controls support by \a camera */ -const ControlInfoMap &PipelineHandler::controls(Camera *camera) +const ControlInfoMap &PipelineHandler::controls(const Camera *camera) const { - CameraData *data = cameraData(camera); + const CameraData *data = cameraData(camera); return data->controlInfo_; } @@ -268,9 +268,9 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * \param[in] camera The camera * \return A ControlList of properties supported by \a camera */ -const ControlList &PipelineHandler::properties(Camera *camera) +const ControlList &PipelineHandler::properties(const Camera *camera) const { - CameraData *data = cameraData(camera); + const CameraData *data = cameraData(camera); return data->properties_; } From patchwork Fri Aug 14 10:45:09 2020 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: 9327 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 78B7DBD87D for ; Fri, 14 Aug 2020 10:45:23 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D024B61618; Fri, 14 Aug 2020 12:45:22 +0200 (CEST) Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3D3EC613B4 for ; Fri, 14 Aug 2020 12:45:21 +0200 (CEST) X-Halon-ID: 3fafff09-de1b-11ea-a39b-005056917f90 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de [84.172.82.168]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id 3fafff09-de1b-11ea-a39b-005056917f90; Fri, 14 Aug 2020 12:45:20 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Fri, 14 Aug 2020 12:45:09 +0200 Message-Id: <20200814104509.189023-4-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> References: <20200814104509.189023-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 3/3] libcamera: camera: Mark controls() and properties() as const operations X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Reading the controls and properties does not modify the camera's state and can be marked as const operations. Signed-off-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- * Changes since v1 - Spelling in commit message. --- include/libcamera/camera.h | 4 ++-- src/libcamera/camera.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 48d88d64a0a94050..272c12c3c47392fc 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -86,8 +86,8 @@ public: int acquire(); int release(); - const ControlInfoMap &controls(); - const ControlList &properties(); + const ControlInfoMap &controls() const; + const ControlList &properties() const; const std::set &streams() const; std::unique_ptr generateConfiguration(const StreamRoles &roles = {}); diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp index 820fa1e3065e5f88..1685697b8ebbebcb 100644 --- a/src/libcamera/camera.cpp +++ b/src/libcamera/camera.cpp @@ -658,7 +658,7 @@ int Camera::release() * * \return A ControlInfoMap listing the controls supported by the camera */ -const ControlInfoMap &Camera::controls() +const ControlInfoMap &Camera::controls() const { return p_->pipe_->controls(this); } @@ -671,7 +671,7 @@ const ControlInfoMap &Camera::controls() * * \return A ControlList of properties supported by the camera */ -const ControlList &Camera::properties() +const ControlList &Camera::properties() const { return p_->pipe_->properties(this); }