diff options
| author | 2023-06-05 13:50:48 +0000 | |
|---|---|---|
| committer | 2023-06-23 14:00:52 +0000 | |
| commit | de56d35db1a04587b32b76cfe6dc3721253d25bd (patch) | |
| tree | f1622dfda72653ff526af9e221d52c02ca7f2afa | |
| parent | f5bb534eccb8034a635c0ab2999f9ace0e44a61a (diff) | |
Correct behaviour of update function to handle multiple wallpapers
Fix: 285843200
Test: manual: open secure camera, take a picture and open it without
unlocking; verify that when going back to lockscreen, the home wallpaper
is never visible
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:a4eb5d06541c9de432346fb96a58e725a184fb78)
Change-Id: Ibe199a6678a27b4c8cbd38cb8085c9296e0a6e13
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WallpaperController.java | 30 |
2 files changed, 12 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 2dc133f060ff..e1132db54479 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1065,7 +1065,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (obscuredChanged && w.isVisible() && mWallpaperController.isWallpaperTarget(w)) { // This is the wallpaper target and its obscured state changed... make sure the // current wallpaper's visibility has been updated accordingly. - mWallpaperController.updateWallpaperVisibility(); + mWallpaperController.updateWallpaperTokens(mDisplayContent.isKeyguardLocked()); } w.handleWindowMovedIfNeeded(); diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 0cf4e89571b5..00bedcd6d45e 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -308,29 +308,12 @@ class WallpaperController { } } - private boolean shouldWallpaperBeVisible(WindowState wallpaperTarget) { - if (DEBUG_WALLPAPER) { - Slog.v(TAG, "Wallpaper vis: target " + wallpaperTarget + " prev=" - + mPrevWallpaperTarget); - } - return wallpaperTarget != null || mPrevWallpaperTarget != null; - } - boolean isWallpaperTargetAnimating() { return mWallpaperTarget != null && mWallpaperTarget.isAnimating(TRANSITION | PARENTS) && (mWallpaperTarget.mActivityRecord == null || !mWallpaperTarget.mActivityRecord.isWaitingForTransitionStart()); } - void updateWallpaperVisibility() { - final boolean visible = shouldWallpaperBeVisible(mWallpaperTarget); - - for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) { - final WallpaperWindowToken token = mWallpaperTokens.get(curTokenNdx); - token.setVisibility(visible); - } - } - /** * Make one wallpaper visible, according to {@attr showHome}. * This is called during the keyguard unlocking transition @@ -801,11 +784,20 @@ class WallpaperController { result.setWallpaperTarget(wallpaperTarget); } + public void updateWallpaperTokens(boolean keyguardLocked) { + if (DEBUG_WALLPAPER) { + Slog.v(TAG, "Wallpaper vis: target " + mWallpaperTarget + " prev=" + + mPrevWallpaperTarget); + } + updateWallpaperTokens(mWallpaperTarget != null || mPrevWallpaperTarget != null, + keyguardLocked); + } + /** * Change the visibility of the top wallpaper to {@param visibility} and hide all the others. */ - private void updateWallpaperTokens(boolean visibility, boolean locked) { - WindowState topWallpaper = mFindResults.getTopWallpaper(locked); + private void updateWallpaperTokens(boolean visibility, boolean keyguardLocked) { + WindowState topWallpaper = mFindResults.getTopWallpaper(keyguardLocked); WallpaperWindowToken topWallpaperToken = topWallpaper == null ? null : topWallpaper.mToken.asWallpaperToken(); for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) { |