[libcamera-devel] [PATCH v3 16/17] v4l2: v4l2_camera: Return int in getBufferFd()
Jacopo Mondi
jacopo at jmondi.org
Mon Nov 29 17:00:22 CET 2021
Hi Laurent
On Mon, Nov 29, 2021 at 01:57:51AM +0200, Laurent Pinchart wrote:
> From: Hirokazu Honda <hiroh at chromium.org>
>
> V4L2Camera::getBufferFd() returns FileDescriptor. However, the
> file descriptor is still owned by V4L2Camera. It should rather
> return an integer to represent V4L2Camera doesn't have the
> ownership of the file descriptor.
>
> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
> ---
> src/v4l2/v4l2_camera.cpp | 6 +++---
> src/v4l2/v4l2_camera.h | 2 +-
> src/v4l2/v4l2_camera_proxy.cpp | 6 +++---
> 3 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
> index 157ab94e0544..464507505c79 100644
> --- a/src/v4l2/v4l2_camera.cpp
> +++ b/src/v4l2/v4l2_camera.cpp
> @@ -186,16 +186,16 @@ void V4L2Camera::freeBuffers()
> bufferAllocator_->free(stream);
> }
>
> -FileDescriptor V4L2Camera::getBufferFd(unsigned int index)
> +int V4L2Camera::getBufferFd(unsigned int index)
> {
> Stream *stream = config_->at(0).stream();
> const std::vector<std::unique_ptr<FrameBuffer>> &buffers =
> bufferAllocator_->buffers(stream);
>
> if (buffers.size() <= index)
> - return FileDescriptor();
> + return -1;
>
> - return buffers[index]->planes()[0].fd;
> + return buffers[index]->planes()[0].fd.fd();
> }
>
> int V4L2Camera::streamOn()
> diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h
> index 0cea111561dd..9817fd393d59 100644
> --- a/src/v4l2/v4l2_camera.h
> +++ b/src/v4l2/v4l2_camera.h
> @@ -51,7 +51,7 @@ public:
>
> int allocBuffers(unsigned int count);
> void freeBuffers();
> - libcamera::FileDescriptor getBufferFd(unsigned int index);
> + int getBufferFd(unsigned int index);
>
> int streamOn();
> int streamOff();
> diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
> index 3610e63cade3..627e38d90f5b 100644
> --- a/src/v4l2/v4l2_camera_proxy.cpp
> +++ b/src/v4l2/v4l2_camera_proxy.cpp
> @@ -114,14 +114,14 @@ void *V4L2CameraProxy::mmap(void *addr, size_t length, int prot, int flags,
> return MAP_FAILED;
> }
>
> - FileDescriptor fd = vcam_->getBufferFd(index);
> - if (!fd.isValid()) {
> + int fd = vcam_->getBufferFd(index);
> + if (fd < 0) {
> errno = EINVAL;
> return MAP_FAILED;
> }
>
> void *map = V4L2CompatManager::instance()->fops().mmap(addr, length, prot,
> - flags, fd.fd(), 0);
> + flags, fd, 0);
> if (map == MAP_FAILED)
> return map;
>
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list