diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index c763cfac4e88..0ce794fdb2ba 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -382,11 +382,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { // Add FLAG_ABOVE_TRANSIENT_LAUNCH to the tree of transient-hide tasks, // so ChangeInfo#hasChanged() can return true to report the transition info. for (int i = mChanges.size() - 1; i >= 0; --i) { - final WindowContainer<?> wc = mChanges.keyAt(i); - if (wc.asTaskFragment() == null && wc.asActivityRecord() == null) continue; - if (isInTransientHide(wc)) { - mChanges.valueAt(i).mFlags |= ChangeInfo.FLAG_ABOVE_TRANSIENT_LAUNCH; - } + updateTransientFlags(mChanges.valueAt(i)); } } ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Transition %d: Set %s as " @@ -581,7 +577,9 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { for (WindowContainer<?> curr = getAnimatableParent(wc); curr != null && !mChanges.containsKey(curr); curr = getAnimatableParent(curr)) { - mChanges.put(curr, new ChangeInfo(curr)); + final ChangeInfo info = new ChangeInfo(curr); + updateTransientFlags(info); + mChanges.put(curr, info); if (isReadyGroup(curr)) { mReadyTracker.addGroup(curr); ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, " Creating Ready-group for" @@ -600,6 +598,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { ChangeInfo info = mChanges.get(wc); if (info == null) { info = new ChangeInfo(wc); + updateTransientFlags(info); mChanges.put(wc, info); } mParticipants.add(wc); @@ -615,6 +614,14 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { } } + private void updateTransientFlags(@NonNull ChangeInfo info) { + final WindowContainer<?> wc = info.mContainer; + // Only look at tasks, taskfragments, or activities + if (wc.asTaskFragment() == null && wc.asActivityRecord() == null) return; + if (!isInTransientHide(wc)) return; + info.mFlags |= ChangeInfo.FLAG_ABOVE_TRANSIENT_LAUNCH; + } + private void recordDisplay(DisplayContent dc) { if (dc == null || mTargetDisplays.contains(dc)) return; mTargetDisplays.add(dc); |