Merge "Don't commit invisible on a collecting transient-launch task" into udc-dev

This commit is contained in:
Evan Rosky
2023-06-28 17:28:01 +00:00
committed by Android (Google) Code Review

View File

@@ -1093,6 +1093,16 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
final Task task = ar.getTask(); final Task task = ar.getTask();
if (task == null) continue; if (task == null) continue;
boolean visibleAtTransitionEnd = mVisibleAtTransitionEndTokens.contains(ar); boolean visibleAtTransitionEnd = mVisibleAtTransitionEndTokens.contains(ar);
// visibleAtTransitionEnd is used to guard against pre-maturely committing
// invisible on a window which is actually hidden by a later transition and not this
// one. However, for a transient launch, we can't use this mechanism because the
// visibility is determined at finish. Instead, use a different heuristic: don't
// commit invisible if the window is already in a later transition. That later
// transition will then handle the commit.
if (isTransientLaunch(ar) && !ar.isVisibleRequested()
&& mController.inCollectingTransition(ar)) {
visibleAtTransitionEnd = true;
}
// We need both the expected visibility AND current requested-visibility to be // We need both the expected visibility AND current requested-visibility to be
// false. If it is expected-visible but not currently visible, it means that // false. If it is expected-visible but not currently visible, it means that
// another animation is queued-up to animate this to invisibility, so we can't // another animation is queued-up to animate this to invisibility, so we can't