[libcamera-devel] [PATCH v2 1/3] libcamera: pipeline_handler: Add const version of cameraData()

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Aug 14 12:56:46 CEST 2020


Hi Niklas,

On 14/08/2020 11:45, Niklas Söderlund wrote:
> Add a version of camerData() that returns a const pointer and mark it as

cameraData()

> 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 <niklas.soderlund at ragnatech.se>
> ---
> * 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();

I wonder if we should unify the code across both of these functions now,
so they both use the same mechanism.


But that's not essential, they both work.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> +}
> +
>  /**
>   * \var PipelineHandler::manager_
>   * \brief The Camera manager associated with the pipeline handler
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list