[{"id":21348,"web_url":"https://patchwork.libcamera.org/comment/21348/","msgid":"<20211129160022.6zj6q5ujsfaxy5d3@uno.localdomain>","date":"2021-11-29T16:00:22","subject":"Re: [libcamera-devel] [PATCH v3 16/17] v4l2: v4l2_camera: Return\n\tint in getBufferFd()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent\n\nOn Mon, Nov 29, 2021 at 01:57:51AM +0200, Laurent Pinchart wrote:\n> From: Hirokazu Honda <hiroh@chromium.org>\n>\n> V4L2Camera::getBufferFd() returns FileDescriptor. However, the\n> file descriptor is still owned by V4L2Camera. It should rather\n> return an integer to represent V4L2Camera doesn't have the\n> ownership of the file descriptor.\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n> ---\n>  src/v4l2/v4l2_camera.cpp       | 6 +++---\n>  src/v4l2/v4l2_camera.h         | 2 +-\n>  src/v4l2/v4l2_camera_proxy.cpp | 6 +++---\n>  3 files changed, 7 insertions(+), 7 deletions(-)\n>\n> diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp\n> index 157ab94e0544..464507505c79 100644\n> --- a/src/v4l2/v4l2_camera.cpp\n> +++ b/src/v4l2/v4l2_camera.cpp\n> @@ -186,16 +186,16 @@ void V4L2Camera::freeBuffers()\n>  \tbufferAllocator_->free(stream);\n>  }\n>\n> -FileDescriptor V4L2Camera::getBufferFd(unsigned int index)\n> +int V4L2Camera::getBufferFd(unsigned int index)\n>  {\n>  \tStream *stream = config_->at(0).stream();\n>  \tconst std::vector<std::unique_ptr<FrameBuffer>> &buffers =\n>  \t\tbufferAllocator_->buffers(stream);\n>\n>  \tif (buffers.size() <= index)\n> -\t\treturn FileDescriptor();\n> +\t\treturn -1;\n>\n> -\treturn buffers[index]->planes()[0].fd;\n> +\treturn buffers[index]->planes()[0].fd.fd();\n>  }\n>\n>  int V4L2Camera::streamOn()\n> diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h\n> index 0cea111561dd..9817fd393d59 100644\n> --- a/src/v4l2/v4l2_camera.h\n> +++ b/src/v4l2/v4l2_camera.h\n> @@ -51,7 +51,7 @@ public:\n>\n>  \tint allocBuffers(unsigned int count);\n>  \tvoid freeBuffers();\n> -\tlibcamera::FileDescriptor getBufferFd(unsigned int index);\n> +\tint getBufferFd(unsigned int index);\n>\n>  \tint streamOn();\n>  \tint streamOff();\n> diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp\n> index 3610e63cade3..627e38d90f5b 100644\n> --- a/src/v4l2/v4l2_camera_proxy.cpp\n> +++ b/src/v4l2/v4l2_camera_proxy.cpp\n> @@ -114,14 +114,14 @@ void *V4L2CameraProxy::mmap(void *addr, size_t length, int prot, int flags,\n>  \t\treturn MAP_FAILED;\n>  \t}\n>\n> -\tFileDescriptor fd = vcam_->getBufferFd(index);\n> -\tif (!fd.isValid()) {\n> +\tint fd = vcam_->getBufferFd(index);\n> +\tif (fd < 0) {\n>  \t\terrno = EINVAL;\n>  \t\treturn MAP_FAILED;\n>  \t}\n>\n>  \tvoid *map = V4L2CompatManager::instance()->fops().mmap(addr, length, prot,\n> -\t\t\t\t\t\t\t       flags, fd.fd(), 0);\n> +\t\t\t\t\t\t\t       flags, fd, 0);\n>  \tif (map == MAP_FAILED)\n>  \t\treturn map;\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5DBACBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Nov 2021 15:59:31 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 242F3605A4;\n\tMon, 29 Nov 2021 16:59:31 +0100 (CET)","from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[217.70.183.198])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2D8B760592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 16:59:30 +0100 (CET)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay6-d.mail.gandi.net (Postfix) with ESMTPSA id B59ADC0002;\n\tMon, 29 Nov 2021 15:59:29 +0000 (UTC)"],"Date":"Mon, 29 Nov 2021 17:00:22 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20211129160022.6zj6q5ujsfaxy5d3@uno.localdomain>","References":"<20211128235752.10836-1-laurent.pinchart@ideasonboard.com>\n\t<20211128235752.10836-17-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211128235752.10836-17-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 16/17] v4l2: v4l2_camera: Return\n\tint in getBufferFd()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]