diff options
| author | 2024-07-22 01:25:59 +0000 | |
|---|---|---|
| committer | 2024-07-22 01:25:59 +0000 | |
| commit | fb1a487f73477e75f0a37dba47fa91cb59d65424 (patch) | |
| tree | beb7b8fcf0a8f3a4f98368ee3b79b2177530dcb5 | |
| parent | 1078f3c9e5fb4ecd993096c7cb97ef91a7ef66ae (diff) | |
| parent | 4b41d4b9d5a63565c7a48b03006d0ae1a204abb0 (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.java | 22 |
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()); - } } } } |