diff options
| author | 2023-06-28 17:28:01 +0000 | |
|---|---|---|
| committer | 2023-06-28 17:28:01 +0000 | |
| commit | bdee1f2316c460df5787aa39cb71a76d2bc18549 (patch) | |
| tree | 55d1d38d3f77a04c85b13b0d19c3b478d49695d8 | |
| parent | b84f6a4e5a56808c0bb4ecdd9237bb875b122f3c (diff) | |
| parent | fffe0f3c4031ca4fa04c63cc0026247c586d9d4e (diff) | |
Merge "Don't commit invisible on a collecting transient-launch task" into udc-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index b7ef5bbf13bd..738869b84474 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1093,6 +1093,16 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { final Task task = ar.getTask(); if (task == null) continue; 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 // 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 |