[libcamera-devel] [PATCH v3 07/11] libcamera: media_device: Make open() and close() private

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat May 11 14:57:07 CEST 2019


Hi Niklas,

Thank you for the patch.

On Sat, May 11, 2019 at 11:19:03AM +0200, Niklas Söderlund wrote:
> All external callers to open() and close() have been refactored and
> there is no need to expose these functions anymore, make them private.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  src/libcamera/include/media_device.h |  6 +-
>  src/libcamera/media_device.cpp       | 98 ++++++++++++++--------------
>  2 files changed, 52 insertions(+), 52 deletions(-)
> 
> diff --git a/src/libcamera/include/media_device.h b/src/libcamera/include/media_device.h
> index 883985055eb419dd..e513a2fee1b91a1b 100644
> --- a/src/libcamera/include/media_device.h
> +++ b/src/libcamera/include/media_device.h
> @@ -30,9 +30,6 @@ public:
>  	void release();
>  	bool busy() const { return acquired_; }
>  
> -	int open();
> -	void close();
> -
>  	int populate();
>  	bool valid() const { return valid_; }
>  
> @@ -62,6 +59,9 @@ private:
>  	bool valid_;
>  	bool acquired_;
>  
> +	int open();
> +	void close();
> +
>  	std::map<unsigned int, MediaObject *> objects_;
>  	MediaObject *object(unsigned int id);
>  	bool addObject(MediaObject *object);
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index b1cc37e840a9fa9d..62c59e7e8fc0299f 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -126,55 +126,6 @@ void MediaDevice::release()
>   * \sa acquire(), release()
>   */
>  
> -/**
> - * \brief Open the media device
> - *
> - * \return 0 on success or a negative error code otherwise
> - * \retval -EBUSY Media device already open
> - * \sa close()
> - */
> -int MediaDevice::open()
> -{
> -	if (fd_ != -1) {
> -		LOG(MediaDevice, Error) << "MediaDevice already open";
> -		return -EBUSY;
> -	}
> -
> -	int ret = ::open(deviceNode_.c_str(), O_RDWR);
> -	if (ret < 0) {
> -		ret = -errno;
> -		LOG(MediaDevice, Error)
> -			<< "Failed to open media device at "
> -			<< deviceNode_ << ": " << strerror(-ret);
> -		return ret;
> -	}
> -	fd_ = ret;
> -
> -	return 0;
> -}
> -
> -/**
> - * \brief Close the media device
> - *
> - * This function closes the media device node. It does not invalidate the media
> - * graph and all cached media objects remain valid and can be accessed normally.
> - * Once closed no operation interacting with the media device node can be
> - * performed until the device is opened again.
> - *
> - * Closing an already closed device is allowed and will not perform any
> - * operation.
> - *
> - * \sa open()
> - */
> -void MediaDevice::close()
> -{
> -	if (fd_ == -1)
> -		return;
> -
> -	::close(fd_);
> -	fd_ = -1;
> -}
> -
>  /**
>   * \brief Populate the MediaDevice with device information and media objects
>   *
> @@ -440,6 +391,55 @@ int MediaDevice::disableLinks()
>   * driver unloading for most devices. The media device is passed as a parameter.
>   */
>  
> +/**
> + * \brief Open the media device
> + *
> + * \return 0 on success or a negative error code otherwise
> + * \retval -EBUSY Media device already open
> + * \sa close()
> + */
> +int MediaDevice::open()
> +{
> +	if (fd_ != -1) {
> +		LOG(MediaDevice, Error) << "MediaDevice already open";
> +		return -EBUSY;
> +	}
> +
> +	int ret = ::open(deviceNode_.c_str(), O_RDWR);
> +	if (ret < 0) {
> +		ret = -errno;
> +		LOG(MediaDevice, Error)
> +			<< "Failed to open media device at "
> +			<< deviceNode_ << ": " << strerror(-ret);
> +		return ret;
> +	}
> +	fd_ = ret;
> +
> +	return 0;
> +}
> +
> +/**
> + * \brief Close the media device
> + *
> + * This function closes the media device node. It does not invalidate the media
> + * graph and all cached media objects remain valid and can be accessed normally.
> + * Once closed no operation interacting with the media device node can be
> + * performed until the device is opened again.
> + *
> + * Closing an already closed device is allowed and will not perform any
> + * operation.
> + *
> + * \sa open()
> + */
> +void MediaDevice::close()
> +{
> +	if (fd_ == -1)
> +		return;
> +
> +	::close(fd_);
> +	fd_ = -1;
> +}
> +
>  /**
>   * \var MediaDevice::objects_
>   * \brief Global map of media objects (entities, pads, links) keyed by their

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list