SurfaceSyncGroup
class SurfaceSyncGroup
kotlin.Any | |
↳ | android.window.SurfaceSyncGroup |
A way for data to be gathered so multiple surfaces can be synced. This is intended to be used with AttachedSurfaceControl, SurfaceView, and SurfaceControlViewHost. This allows different parts of the system to synchronize different surfaces themselves without having to manage timing of different rendering threads. This will also allow synchronization of surfaces across multiple processes. The caller can add SurfaceControlViewHosts from another process to the SurfaceSyncGroup in a different process and this clas will ensure all the surfaces are ready before applying everything together. see the SurfaceSyncGroup documentation
Summary
Public constructors | |
---|---|
SurfaceSyncGroup(name: String) Starts a sync and will automatically apply the final, merged transaction. |
Public methods | |
---|---|
Boolean |
add(attachedSurfaceControl: AttachedSurfaceControl?, runnable: Runnable?) Add an AttachedSurfaceControl to the SurfaceSyncGroup. |
Boolean |
add(surfacePackage: SurfaceControlViewHost.SurfacePackage, runnable: Runnable?) Add a SurfaceControlViewHost. |
Unit |
addTransaction(transaction: SurfaceControl.Transaction) Add a Transaction to this SurfaceSyncGroup. |
Unit |
Mark the SurfaceSyncGroup as ready to complete. |
Public constructors
SurfaceSyncGroup
SurfaceSyncGroup(name: String)
Starts a sync and will automatically apply the final, merged transaction.
Parameters | |
---|---|
name |
String: Used for identifying and debugging. This value cannot be null . |
Public methods
add
fun add(
attachedSurfaceControl: AttachedSurfaceControl?,
runnable: Runnable?
): Boolean
Add an AttachedSurfaceControl to the SurfaceSyncGroup. The AttachedSurfaceControl will pause rendering to ensure the runnable can be invoked and that the sync picks up the frame that contains the changes.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.
Parameters | |
---|---|
attachedSurfaceControl |
AttachedSurfaceControl?: The AttachedSurfaceControl that will be add to this SurfaceSyncGroup. This value may be null . |
runnable |
Runnable?: This is run on the same thread that the call was made on, but after the rendering is paused and before continuing to render the next frame. This method will not return until the execution of the runnable completes. This can be used to make changes to the AttachedSurfaceControl, ensuring that the changes are included in the sync. This value may be null . |
Return | |
---|---|
Boolean |
true if the AttachedSurfaceControl was successfully added to the SurfaceSyncGroup, false otherwise. |
add
fun add(
surfacePackage: SurfaceControlViewHost.SurfacePackage,
runnable: Runnable?
): Boolean
Add a SurfaceControlViewHost.SurfacePackage to the SurfaceSyncGroup. This will get the SurfaceSyncGroup from the SurfacePackage, which will pause rendering for the SurfaceControlViewHost. The runnable will be invoked to allow the host to update the SCVH in a synchronized way. Finally, it will add the SCVH to the SurfaceSyncGroup and unpause rendering in the SCVH, allowing the changes to get picked up and included in the sync.
Parameters | |
---|---|
surfacePackage |
SurfaceControlViewHost.SurfacePackage: The SurfacePackage that will be added to this SurfaceSyncGroup. This value cannot be null . |
runnable |
Runnable?: This is run on the same thread that the call was made on, but after the rendering is paused and before continuing to render the next frame. This method will not return until the execution of the runnable completes. This can be used to make changes to the SurfaceControlViewHost, ensuring that the changes are included in the sync. This value may be null . |
Return | |
---|---|
Boolean |
true if the SurfaceControlViewHost was successfully added to the current SurfaceSyncGroup, false otherwise. |
addTransaction
fun addTransaction(transaction: SurfaceControl.Transaction): Unit
Add a Transaction to this SurfaceSyncGroup. This allows the caller to provide other info that should be synced with the other transactions in this SurfaceSyncGroup.
Parameters | |
---|---|
transaction |
SurfaceControl.Transaction: The transaction to add to the SurfaceSyncGroup. This value cannot be null . |
markSyncReady
fun markSyncReady(): Unit
Mark the SurfaceSyncGroup as ready to complete. No more data can be added to this SurfaceSyncGroup.
Once the SurfaceSyncGroup is marked as ready, it will be able to complete once all child SurfaceSyncGroup have completed their sync.