18 if (debug_name ==
nullptr) {
19 debug_name =
"Impeller Layer";
27 VALIDATION_LOG <<
"Surface control could not be removed from its parent. "
37 return control_.
get();
45 if (!transaction.
SetParent(*
this,
nullptr)) {
48 return transaction.
Apply();
53 GetProcTable().ASurfaceControl_createFromWindow.IsAvailable() &&
54 GetProcTable().ASurfaceTransaction_setEnableBackPressure.IsAvailable();
void reset(const T &value=Traits::InvalidValue())
~SurfaceControl()
Removes the surface control from the presentation hierarchy managed by the system compositor and rele...
SurfaceControl(ANativeWindow *window, const char *debug_name=nullptr)
Creates a new surface control and adds it as a child of the given window.
static bool IsAvailableOnPlatform()
bool RemoveFromParent() const
Remove the surface control from the hierarchy of nodes presented by the system compositor.
ASurfaceControl * GetHandle() const
A wrapper for ASurfaceTransaction. https://developer.android.com/ndk/reference/group/native-activity#...
bool Apply(OnCompleteCallback callback=nullptr)
Applies the updated encoded in the transaction and invokes the callback when the updated are complete...
bool SetParent(const SurfaceControl &control, const SurfaceControl *new_parent=nullptr)
Set the new parent control of the given control. If the new parent is null, it is removed from the co...
const ProcTable & GetProcTable()
bool IsValid() const
If a valid proc table could be setup. This may fail in case of setup on non-Android platforms.
struct ANativeWindow ANativeWindow