diff options
| author | 2012-06-13 14:09:08 -0700 | |
|---|---|---|
| committer | 2012-06-13 14:09:08 -0700 | |
| commit | f8d05b4ea61bb0db32c1a7f93f27a13f67c9ef0c (patch) | |
| tree | 7e71598e79650a346ee3f633d9311251fe4747e2 | |
| parent | 4b4a947b5e4913d7f8b7df15d3a7cdf8f343471f (diff) | |
| parent | 507a2ee12b6d1d683e4a5806804c472b3fe32e61 (diff) | |
Merge "Update wallpaper visibility at time of hide/show." into jb-dev
3 files changed, 24 insertions, 20 deletions
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index efed0a4a3721..894b5236cf3b 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -93,6 +93,7 @@ public class WindowAnimator { final WindowStateAnimator winAnimator = wallpaper.mWinAnimator; if (!winAnimator.mLastHidden) { winAnimator.hide(); + mService.dispatchWallpaperVisibility(wallpaper, false); mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; } } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index b85573f82849..6d5ae71427bd 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -1870,16 +1870,7 @@ public class WindowManagerService extends IWindowManager.Stub // First, make sure the client has the current visibility // state. - if (wallpaper.mWallpaperVisible != visible) { - wallpaper.mWallpaperVisible = visible; - try { - if (DEBUG_VISIBILITY || DEBUG_WALLPAPER) Slog.v(TAG, - "Setting visibility of wallpaper " + wallpaper - + ": " + visible); - wallpaper.mClient.dispatchAppVisibility(visible); - } catch (RemoteException e) { - } - } + dispatchWallpaperVisibility(wallpaper, visible); wallpaper.mWinAnimator.mAnimLayer = wallpaper.mLayer + mWallpaperAnimLayerAdjustment; if (DEBUG_LAYERS || DEBUG_WALLPAPER) Slog.v(TAG, "adjustWallpaper win " @@ -2089,6 +2080,24 @@ public class WindowManagerService extends IWindowManager.Stub } } + /** + * Check wallpaper for visiblity change and notify window if so. + * @param wallpaper The wallpaper to test and notify. + * @param visible Current visibility. + */ + void dispatchWallpaperVisibility(final WindowState wallpaper, final boolean visible) { + if (wallpaper.mWallpaperVisible != visible) { + wallpaper.mWallpaperVisible = visible; + try { + if (DEBUG_VISIBILITY || DEBUG_WALLPAPER) Slog.v(TAG, + "Updating visibility of wallpaper " + wallpaper + + ": " + visible + " Callers=" + Debug.getCallers(2)); + wallpaper.mClient.dispatchAppVisibility(visible); + } catch (RemoteException e) { + } + } + } + void updateWallpaperVisibilityLocked() { final boolean visible = isWallpaperVisible(mWallpaperTarget); final int dw = mAppDisplayWidth; @@ -2113,16 +2122,7 @@ public class WindowManagerService extends IWindowManager.Stub updateWallpaperOffsetLocked(wallpaper, dw, dh, false); } - if (wallpaper.mWallpaperVisible != visible) { - wallpaper.mWallpaperVisible = visible; - try { - if (DEBUG_VISIBILITY || DEBUG_WALLPAPER) Slog.v(TAG, - "Updating visibility of wallpaper " + wallpaper - + ": " + visible); - wallpaper.mClient.dispatchAppVisibility(visible); - } catch (RemoteException e) { - } - } + dispatchWallpaperVisibility(wallpaper, visible); } } } diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java index bdacb6e23dac..579cbb7b5119 100644 --- a/services/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/java/com/android/server/wm/WindowStateAnimator.java @@ -1122,6 +1122,9 @@ class WindowStateAnimator { + " during relayout"); if (showSurfaceRobustlyLocked()) { mLastHidden = false; + if (w.mIsWallpaper) { + mService.dispatchWallpaperVisibility(w, true); + } } else { w.mOrientationChanging = false; } |