libcamera: v4l2_device: Use UniqueFD for a file descriptor

Manages a file descriptor owned by V4L2Device for a v4l2 device node
by UniqueFD.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Hirokazu Honda
2021-06-10 16:50:23 +09:00
committed by Laurent Pinchart
parent 91dcd719d7
commit cfe4f9622e
3 changed files with 21 additions and 27 deletions
+6 -10
View File
@@ -24,6 +24,7 @@
#include <libcamera/base/event_notifier.h>
#include <libcamera/base/file_descriptor.h>
#include <libcamera/base/log.h>
#include <libcamera/base/unique_fd.h>
#include <libcamera/base/utils.h>
#include "libcamera/internal/formats.h"
@@ -620,22 +621,17 @@ int V4L2VideoDevice::open()
*/
int V4L2VideoDevice::open(int handle, enum v4l2_buf_type type)
{
int ret;
int newFd;
newFd = dup(handle);
if (newFd < 0) {
ret = -errno;
UniqueFD newFd(dup(handle));
if (!newFd.isValid()) {
LOG(V4L2, Error) << "Failed to duplicate file handle: "
<< strerror(-ret);
return ret;
<< strerror(errno);
return -errno;
}
ret = V4L2Device::setFd(newFd);
int ret = V4L2Device::setFd(std::move(newFd));
if (ret < 0) {
LOG(V4L2, Error) << "Failed to set file handle: "
<< strerror(-ret);
::close(newFd);
return ret;
}