summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2024-07-22 01:25:59 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-07-22 01:25:59 +0000
commitfb1a487f73477e75f0a37dba47fa91cb59d65424 (patch)
treebeb7b8fcf0a8f3a4f98368ee3b79b2177530dcb5
parent1078f3c9e5fb4ecd993096c7cb97ef91a7ef66ae (diff)
parent4b41d4b9d5a63565c7a48b03006d0ae1a204abb0 (diff)
Merge "Avoid creating wallpaper rotation leash if it is not in transition" into main
-rw-r--r--services/core/java/com/android/server/wm/Transition.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index f6a68d58ea27..72092e57e874 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -1766,7 +1766,19 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
}
for (int i = 0; i < mTargets.size(); ++i) {
- final DisplayArea da = mTargets.get(i).mContainer.asDisplayArea();
+ final WindowContainer<?> wc = mTargets.get(i).mContainer;
+ final WallpaperWindowToken wp = wc.asWallpaperToken();
+ if (wp != null) {
+ // If on a rotation leash, the wallpaper token surface needs to be shown explicitly
+ // because shell only gets the leash and the wallpaper token surface is not allowed
+ // to be changed by non-transition logic until the transition is finished.
+ if (Flags.ensureWallpaperInTransitions() && wp.isVisibleRequested()
+ && wp.getFixedRotationLeash() != null) {
+ transaction.show(wp.mSurfaceControl);
+ }
+ continue;
+ }
+ final DisplayArea<?> da = wc.asDisplayArea();
if (da == null) continue;
if (da.isVisibleRequested()) {
mController.mValidateDisplayVis.remove(da);
@@ -2168,14 +2180,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
&& !wallpaperIsOwnTarget(wallpaper)) {
wallpaper.setVisibleRequested(false);
}
- if (showWallpaper && Flags.ensureWallpaperInTransitions()
- && wallpaper.isVisibleRequested()
- && getLeashSurface(wallpaper, t) != wallpaper.getSurfaceControl()) {
- // If on a rotation leash, we need to explicitly show the wallpaper surface
- // because shell only gets the leash and we don't allow non-transition logic
- // to touch the surfaces until the transition is over.
- t.show(wallpaper.getSurfaceControl());
- }
}
}
}