Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b9c3bf2 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Don't schedule SurfaceControl transaction if it is not valid

This CL adds a preventive check to ensure that we don't schedule a
transaction on a SurfaceControl that was released.

Bug: 237183762
Test: Manual
Change-Id: I86f8372c7de8234f5f1dd941dbf1c9eb9fbef647
Merged-In: I86f8372c7de8234f5f1dd941dbf1c9eb9fbef647
parent 904e5190
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -494,9 +494,10 @@ class ActivityLaunchAnimator(
        }

        private fun applyStateToWindow(window: RemoteAnimationTarget, state: LaunchAnimator.State) {
            if (transactionApplierView.viewRootImpl == null) {
                // If the view root we synchronize with was detached, don't apply any transaction
                // (as [SyncRtSurfaceTransactionApplier.scheduleApply] would otherwise throw).
            if (transactionApplierView.viewRootImpl == null || !window.leash.isValid) {
                // Don't apply any transaction if the view root we synchronize with was detached or
                // if the SurfaceControl associated with [window] is not valid, as
                // [SyncRtSurfaceTransactionApplier.scheduleApply] would otherwise throw.
                return
            }

@@ -557,9 +558,10 @@ class ActivityLaunchAnimator(
            state: LaunchAnimator.State,
            linearProgress: Float
        ) {
            if (transactionApplierView.viewRootImpl == null) {
                // If the view root we synchronize with was detached, don't apply any transaction
                // (as [SyncRtSurfaceTransactionApplier.scheduleApply] would otherwise throw).
            if (transactionApplierView.viewRootImpl == null || !navigationBar.leash.isValid) {
                // Don't apply any transaction if the view root we synchronize with was detached or
                // if the SurfaceControl associated with [navigationBar] is not valid, as
                // [SyncRtSurfaceTransactionApplier.scheduleApply] would otherwise throw.
                return
            }