SyncFenceCompat
public final class SyncFenceCompat implements AutoCloseable
A synchronization primitive which signals when hardware units have completed work on a particular resource. They initially start in an unsignaled state and make a one-time transaction to either a signaled or error state.
SyncFenceCompat is a presentation fence used in combination with SurfaceControlCompat.Transaction.setBuffer. Note that depending on API level, this will utilize either android.hardware.SyncFence or a compatibility implementation.
Summary
Constants |
|
|---|---|
static final long |
An invalid signal time. |
static final long |
A pending signal time. |
Public methods |
|
|---|---|
final boolean |
await(long timeoutNanos)Waits for a |
final boolean |
Waits forever for a |
void |
close()Close the |
static final @NonNull SyncFenceCompat |
Creates a native synchronization fence from an EGLSync object. |
final long |
@RequiresApi(value = 26)Returns the time that the fence signaled in the CLOCK_MONOTONIC time domain. |
final boolean |
isValid()Checks if the SyncFence object is valid. |
Constants
SIGNAL_TIME_INVALID
public static final long SIGNAL_TIME_INVALID
An invalid signal time. Represents either the signal time for a SyncFence that isn't valid (that is, isValid is false), or if an error occurred while attempting to retrieve the signal time.
SIGNAL_TIME_PENDING
public static final long SIGNAL_TIME_PENDING
A pending signal time. This is equivalent to the max value of a long, representing an infinitely far point in the future.
Public methods
await
public final boolean await(long timeoutNanos)
Waits for a SyncFenceCompat to signal for up to the timeout duration
| Parameters | |
|---|---|
long timeoutNanos |
time in nanoseconds to wait for before timing out. |
awaitForever
public final boolean awaitForever()
Waits forever for a SyncFenceImpl to signal
createNativeSyncFence
public static final @NonNull SyncFenceCompat createNativeSyncFence()
Creates a native synchronization fence from an EGLSync object.
| Throws | |
|---|---|
kotlin.IllegalStateException |
if EGL dependencies cannot be resolved |
getSignalTimeNanos
@RequiresApi(value = 26)
public final long getSignalTimeNanos()
Returns the time that the fence signaled in the CLOCK_MONOTONIC time domain. This returns an instant, SyncFenceCompat.SIGNAL_TIME_INVALID if the SyncFence is invalid, and if the fence hasn't yet signaled, then SyncFenceCompat.SIGNAL_TIME_PENDING is returned.