@@ -11,11 +11,14 @@
namespace libcamera {
+class UniqueFD;
+
class FileDescriptor final
{
public:
explicit FileDescriptor(const int &fd = -1);
explicit FileDescriptor(int &&fd);
+ explicit FileDescriptor(UniqueFD fd);
FileDescriptor(const FileDescriptor &other);
FileDescriptor(FileDescriptor &&other);
~FileDescriptor();
@@ -13,6 +13,7 @@
#include <utility>
#include <libcamera/base/log.h>
+#include <libcamera/base/unique_fd.h>
/**
* \file base/file_descriptor.h
@@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)
fd = -1;
}
+/**
+ * \brief Create a FileDescriptor taking ownership of a given UniqueFD \a fd
+ * \param[in] fd UniqueFD
+ *
+ * Construct a FileDescriptor from UniqueFD by taking ownership of the \a fd.
+ * The original \a fd becomes invalid.
+ */
+FileDescriptor::FileDescriptor(UniqueFD fd)
+ : FileDescriptor(fd.release())
+{
+}
+
/**
* \brief Copy constructor, create a FileDescriptor from a copy of \a other
* \param[in] other The other FileDescriptor