[libcamera-devel] [RFC 03/11] libcamera: media_device: Only read device information in populate()
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Apr 17 00:46:41 CEST 2019
Hi Niklas,
Thank you for the patch.
On Sun, Apr 14, 2019 at 03:34:58AM +0200, Niklas Söderlund wrote:
> There is no reason to reread the MEDIA_IOC_DEVICE_INFO information every
> time the media device is opened. Move it populate() where it will be
> read once together the other information about the media device.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> src/libcamera/media_device.cpp | 31 ++++++++++++++-----------------
> 1 file changed, 14 insertions(+), 17 deletions(-)
>
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index ecb00a1d5abffe80..54706bb73a7591d5 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -131,9 +131,6 @@ bool MediaDevice::acquire()
> * with the device node associated with the media device, the device node must
> * be opened.
> *
> - * This function also retrieves media device information from the device node,
> - * which can be queried through driver().
This should go to the documentation of the populate() function (in a
modified form to integrate nicely with it).
> - *
> * If the device is already open the function returns -EBUSY.
> *
> * \return 0 on success or a negative error code otherwise
> @@ -155,20 +152,6 @@ int MediaDevice::open()
> }
> fd_ = ret;
>
> - struct media_device_info info = { };
> - ret = ioctl(fd_, MEDIA_IOC_DEVICE_INFO, &info);
> - if (ret) {
> - ret = -errno;
> - LOG(MediaDevice, Error)
> - << "Failed to get media device info "
> - << ": " << strerror(-ret);
> - return ret;
> - }
> -
> - driver_ = info.driver;
> - model_ = info.model;
> - version_ = info.media_version;
> -
> return 0;
> }
>
> @@ -224,6 +207,20 @@ int MediaDevice::populate()
> if (ret)
> return ret;
>
> + struct media_device_info info = {};
> + ret = ioctl(fd_, MEDIA_IOC_DEVICE_INFO, &info);
> + if (ret) {
> + ret = -errno;
> + LOG(MediaDevice, Error)
> + << "Failed to get media device info "
While at it you could merge the ": " wit the previous line (and remove
the space after "info").
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + << ": " << strerror(-ret);
> + goto err_out;
> + }
> +
> + driver_ = info.driver;
> + model_ = info.model;
> + version_ = info.media_version;
> +
> /*
> * Keep calling G_TOPOLOGY until the version number stays stable.
> */
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list