summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ikram Gabiyev <gabiyev@google.com> 2025-01-14 11:18:10 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-01-14 11:18:10 -0800
commitde2fcaf209b7c4f5367744a60cac4fd9bfecaf16 (patch)
treedae68d3dc7d908a44c022ecb43f64f4114dfc77f
parente010704324cafde2ca92417f4f951fb502b2ccba (diff)
parent4d5fa9fd2aa61d8e8f1b444e77c1fb3edcbca84f (diff)
Merge "Use correct root leash if PiP is the only target" into main
-rw-r--r--services/core/java/com/android/server/wm/Transition.java7
1 files changed, 7 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 f4a455a9c2dd..75cefdff2b0b 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -2890,6 +2890,13 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
leashReference = leashReference.getParent();
}
}
+ if (wc == leashReference
+ && sortedTargets.get(i).mWindowingMode == WINDOWING_MODE_PINNED) {
+ // If a PiP task is the only target, we wanna make sure the transition root leash
+ // is at the top in case PiP is sent to back. This is done because a pinned task is
+ // meant to be always-on-top throughout a transition.
+ leashReference = ancestor.getTopChild();
+ }
final SurfaceControl rootLeash = leashReference.makeAnimationLeash().setName(
"Transition Root: " + leashReference.getName())
.setCallsite("Transition.calculateTransitionRoots").build();