A wrapper for ASurfaceTransaction. https://developer.android.com/ndk/reference/group/native-activity#asurfacetransaction.
More...
#include <surface_transaction.h>
A wrapper for ASurfaceTransaction. https://developer.android.com/ndk/reference/group/native-activity#asurfacetransaction.
A surface transaction is a collection of updates to the hierarchy of surfaces (represented by ASurfaceControl
instances) that are applied atomically in the compositor.
This wrapper is only available on Android API 29 and above.
- Note
- Transactions should be short lived objects (create, apply, collect). But, if these are used on multiple threads, they must be externally synchronized.
Definition at line 34 of file surface_transaction.h.
◆ OnCompleteCallback
◆ SurfaceTransaction() [1/2]
impeller::android::SurfaceTransaction::SurfaceTransaction |
( |
| ) |
|
◆ ~SurfaceTransaction()
impeller::android::SurfaceTransaction::~SurfaceTransaction |
( |
| ) |
|
|
default |
◆ SurfaceTransaction() [2/2]
◆ Apply()
bool impeller::android::SurfaceTransaction::Apply |
( |
OnCompleteCallback |
callback = nullptr | ) |
|
Applies the updated encoded in the transaction and invokes the callback when the updated are complete.
- Warning
- The callback will be invoked on a system managed thread.
- Note
- It is fine to immediately destroy the transaction after the call to apply. It is not necessary to wait for transaction completion to collect the transaction handle.
- Parameters
-
- Returns
true
if the surface transaction was applied. true
does not indicate the application was completed however. Only the invocation of the callback denotes transaction completion.
Definition at line 26 of file surface_transaction.cc.
26 {
28 return false;
29 }
30
33 }
34
36
37 auto data = std::make_unique<TransactionInFlightData>();
39 proc_table.ASurfaceTransaction_setOnComplete(
42 [](void* context, ASurfaceTransactionStats* stats) -> void {
43 auto data = reinterpret_cast<TransactionInFlightData*>(context);
44 data->callback();
45 delete data;
46 });
47 proc_table.ASurfaceTransaction_apply(transaction_.
get());
48
49
51 return true;
52}
void reset(const T &value=Traits::InvalidValue())
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
◆ IsAvailableOnPlatform()
bool impeller::android::SurfaceTransaction::IsAvailableOnPlatform |
( |
| ) |
|
|
static |
- Returns
true
if any surface transactions can be created on this platform.
Definition at line 99 of file surface_transaction.cc.
99 {
101 GetProcTable().ASurfaceTransaction_create.IsAvailable();
102}
bool IsValid() const
If a valid proc table could be setup. This may fail in case of setup on non-Android platforms.
◆ IsValid()
bool impeller::android::SurfaceTransaction::IsValid |
( |
| ) |
const |
◆ operator=()
◆ SetBackgroundColor()
bool impeller::android::SurfaceTransaction::SetBackgroundColor |
( |
const SurfaceControl & |
control, |
|
|
const Color & |
color |
|
) |
| |
Encodes the updated background color of the surface control. The update will not be committed till the call to Apply
however.
- See also
SurfaceTransaction::Apply
.
- Parameters
-
[in] | control | The control |
[in] | color | The color |
- Returns
true
if the background control will be set when transaction is applied.
Definition at line 67 of file surface_transaction.cc.
68 {
69 if (!
IsValid() || !control.IsValid()) {
70 return false;
71 }
73 control.GetHandle(),
78 ADATASPACE_SRGB_LINEAR
79 );
80 return true;
81}
◆ SetContents()
Encodes that the updated contents of a surface control are specified by the given hardware buffer. The update will not be committed till the call to Apply
however.
- See also
SurfaceTransaction::Apply
.
- Parameters
-
[in] | control | The control |
[in] | buffer | The hardware buffer |
- Returns
- If the update was encoded in the transaction.
Definition at line 54 of file surface_transaction.cc.
55 {
56 if (control ==
nullptr ||
buffer ==
nullptr) {
58 return false;
59 }
61 control->GetHandle(),
63 -1);
64 return true;
65}
static const uint8_t buffer[]
◆ SetParent()
Set the new parent control of the given control. If the new parent is null, it is removed from the control hierarchy.
- Parameters
-
[in] | control | The control |
[in] | new_parent | The new parent |
- Returns
true
if the control will be re-parented when the transaction is applied.
Definition at line 83 of file surface_transaction.cc.
84 {
85 if (!
IsValid() || !control.IsValid()) {
86 return false;
87 }
88 if (new_parent && !new_parent->IsValid()) {
89 return false;
90 }
93 control.GetHandle(),
94 new_parent == nullptr ? nullptr : new_parent->GetHandle()
95 );
96 return true;
97}
The documentation for this class was generated from the following files: