libcamera
v0.3.2+116-83c5ad0f
Supporting cameras in Linux since 2019
|
Synchronization primitive to manage resources. More...
Public Member Functions | |
Fence (UniqueFD fd) | |
Create a Fence. More... | |
bool | isValid () const |
Check if a Fence is valid. More... | |
const UniqueFD & | fd () const |
Retrieve a constant reference to the file descriptor. More... | |
UniqueFD | release () |
Release the ownership of the file descriptor. More... | |
Synchronization primitive to manage resources.
The Fence class models a synchronization primitive that can be used by applications to explicitly synchronize resource usage, and can be shared by multiple processes.
Fences are most commonly used in association with frame buffers. A FrameBuffer can be associated with a Fence so that the library can wait for the Fence to be signalled before allowing the camera device to actually access the memory area described by the FrameBuffer.
By using a fence, applications can then synchronize between frame buffer consumers and producers, as for example a display device and a camera, to guarantee that a new data transfers only happen once the existing frames have been displayed.
A Fence can be realized by different event notification primitives, the most common of which is represented by waiting for read events to happen on a kernel sync file. This is currently the only mechanism supported by libcamera, but others can be implemented by extending or subclassing this class and implementing opportune handling in the core library.
libcamera::Fence::Fence | ( | UniqueFD | fd | ) |
|
inline |
Retrieve a constant reference to the file descriptor.
|
inline |
|
inline |
Release the ownership of the file descriptor.
Release the ownership of the wrapped file descriptor by returning it to the caller.