[libcamera-devel] [PATCH 8/8] libcamera: camera: make sure camera is configured before starting

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Feb 27 17:57:18 CET 2019


Hi Niklas,

Thank you for the patch.

On Tue, Feb 26, 2019 at 03:18:57AM +0100, Niklas Söderlund wrote:
> If the camera is not configured there is little use to start it. Add a
> check to make sure the camera is configured before it's started.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  src/libcamera/camera.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index ba8638009992170f..cbc34599d25e5ed5 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -423,12 +423,19 @@ int Camera::queueRequest(Request *request)
>   *
>   * \return 0 on success or a negative error code
>   * \retval -EACCES The camera is not in a state where it can be started.
> + * \retval -EINVAL The camera is not configured.
>   */
>  int Camera::start()
>  {
>  	if (!stateIs(Acquired))
>  		return -EACCES;
>  
> +	if (activeStreams_.empty()) {
> +		LOG(Camera, Error)
> +			<< "Can't start camera without configuration";
> +		return -EINVAL;
> +	}

So this essentially creates a Configured state, without naming it. I
think the implementation may be simpler if you added an explicit state,
but there's no urgency, as the check is in place here.

I however wonder if -EINVAL is the right error code, given that you use
-EACCESS to denote state-related errors.

> +
>  	LOG(Camera, Debug) << "Starting capture";
>  
>  	int ret = pipe_->start(this);

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list