diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 0994fa4464db0..dd6bcb1060ea1 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5660,13 +5660,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final DisplayContent displayContent = getDisplayContent(); if (!visible) { mImeInsetsFrozenUntilStartInput = true; - if (usingShellTransitions) { - final WindowState wallpaperTarget = - displayContent.mWallpaperController.getWallpaperTarget(); - if (wallpaperTarget != null && wallpaperTarget.mActivityRecord == this) { - displayContent.mWallpaperController.hideWallpapers(wallpaperTarget); - } - } } if (!displayContent.mClosingApps.contains(this) diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 1b27bb17f5994..c14a8a0e678ff 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1177,16 +1177,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { hasParticipatedDisplay = true; continue; } - final WallpaperWindowToken wt = participant.asWallpaperToken(); - if (wt != null) { - final boolean visibleAtTransitionEnd = mVisibleAtTransitionEndTokens.contains(wt); - if (!visibleAtTransitionEnd && !wt.isVisibleRequested()) { - ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, - " Commit wallpaper becoming invisible: %s", wt); - wt.commitVisibility(false /* visible */); - } - continue; - } final Task tr = participant.asTask(); if (tr != null && tr.isVisibleRequested() && tr.inPinnedWindowingMode()) { final ActivityRecord top = tr.getTopNonFinishingActivity(); @@ -1206,6 +1196,20 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { } } } + // Commit wallpaper visibility after activity, because usually the wallpaper target token is + // an activity, and wallpaper's visibility is depends on activity's visibility. + for (int i = mParticipants.size() - 1; i >= 0; --i) { + final WallpaperWindowToken wt = mParticipants.valueAt(i).asWallpaperToken(); + if (wt == null) continue; + final WindowState target = wt.mDisplayContent.mWallpaperController.getWallpaperTarget(); + final boolean isTargetInvisible = target == null || !target.mToken.isVisible(); + if (isTargetInvisible || (!wt.isVisibleRequested() + && !mVisibleAtTransitionEndTokens.contains(wt))) { + ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, + " Commit wallpaper becoming invisible: %s", wt); + wt.commitVisibility(false /* visible */); + } + } if (committedSomeInvisible) { mController.onCommittedInvisibles(); }