diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2021-11-15 19:01:56 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2021-12-11 17:53:40 +0100 |
commit | 8ac8ecb1e12f18891369bb26693bc3a0a7d6ff94 (patch) | |
tree | 57d71939ed2b2cca0baca6bd6606e7776bfd1b78 /include | |
parent | db37335ee0ee78f7e5562a9617c1b4f17451fc3a (diff) |
libcamera: fence: Introduce Fence
Introduce a Fence class which models a synchronization primitive that
allows to notify the availability of a resource.
The Fence is modeled as a wrapper of a UniqueFD instance where
read events are used to signal the Fence. The class can be later
extended to support additional signalling mechanisms.
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/fence.h | 31 | ||||
-rw-r--r-- | include/libcamera/meson.build | 1 |
2 files changed, 32 insertions, 0 deletions
diff --git a/include/libcamera/fence.h b/include/libcamera/fence.h new file mode 100644 index 00000000..c0c916c2 --- /dev/null +++ b/include/libcamera/fence.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2021, Google Inc. + * + * internal/fence.h - Synchronization fence + */ + +#pragma once + +#include <libcamera/base/class.h> +#include <libcamera/base/unique_fd.h> + +namespace libcamera { + +class Fence +{ +public: + Fence(UniqueFD fd); + + bool isValid() const { return fd_.isValid(); } + const UniqueFD &fd() const { return fd_; } + + UniqueFD release() { return std::move(fd_); } + +private: + LIBCAMERA_DISABLE_COPY_AND_MOVE(Fence) + + UniqueFD fd_; +}; + +} /* namespace libcamera */ diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build index 5f42977c..8c2cae00 100644 --- a/include/libcamera/meson.build +++ b/include/libcamera/meson.build @@ -6,6 +6,7 @@ libcamera_public_headers = files([ 'camera.h', 'camera_manager.h', 'controls.h', + 'fence.h', 'framebuffer.h', 'framebuffer_allocator.h', 'geometry.h', |