summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Craig Mautner <cmautner@google.com> 2012-06-11 13:10:01 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-06-11 13:10:01 -0700
commit47adf865bddf6c81051d457e04785408d2710f60 (patch)
treea208ea18c2004f950022304ff709e95a891e25a3
parent0f6471ace77387560988964ed0679f843bba6f1f (diff)
parentb9836b9185132974f6cfa9296bb3c28d1c9b668a (diff)
Merge "Fix exposing wallpaper on rotations and other." into jb-dev
-rw-r--r--services/java/com/android/server/wm/WindowAnimator.java21
-rw-r--r--services/java/com/android/server/wm/WindowStateAnimator.java15
2 files changed, 21 insertions, 15 deletions
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index d25a96078031..b5cf20135bc3 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -85,12 +85,19 @@ public class WindowAnimator {
mPolicy = policy;
}
- void hideWallpapersLocked() {
- for (final WindowToken token : mService.mWallpaperTokens) {
- for (final WindowState wallpaper : token.windows) {
- wallpaper.mWinAnimator.hide();
+ void hideWallpapersLocked(final WindowState w) {
+ if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null)
+ || mService.mWallpaperTarget == null) {
+ for (final WindowToken token : mService.mWallpaperTokens) {
+ for (final WindowState wallpaper : token.windows) {
+ final WindowStateAnimator winAnimator = wallpaper.mWinAnimator;
+ if (!winAnimator.mLastHidden) {
+ winAnimator.hide();
+ mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+ }
+ }
+ token.hidden = true;
}
- token.hidden = true;
}
}
@@ -491,6 +498,10 @@ public class WindowAnimator {
for (int i = 0; i < N; i++) {
final WindowStateAnimator winAnimator = mWinAnimators.get(i);
if (winAnimator.mWin.mIsWallpaper && mService.mWallpaperTarget == null) {
+ if (!winAnimator.mWin.mWallpaperVisible && !winAnimator.mLastHidden) {
+ // Wallpaper is no longer visible and there is no wp target => hide it.
+ winAnimator.hide();
+ }
continue;
}
winAnimator.prepareSurfaceLocked(true);
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 5908958d6c00..d140aca9204a 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -16,7 +16,6 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Debug;
-import android.os.RemoteException;
import android.util.Slog;
import android.view.Surface;
import android.view.SurfaceSession;
@@ -379,10 +378,7 @@ class WindowStateAnimator {
mService.mPendingRemove.add(mWin);
mWin.mRemoveOnExit = false;
}
- if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
- mAnimator.hideWallpapersLocked();
- mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
- }
+ mAnimator.hideWallpapersLocked(mWin);
}
void hide() {
@@ -738,6 +734,7 @@ class WindowStateAnimator {
}
mSurface.destroy();
}
+ mAnimator.hideWallpapersLocked(mWin);
} catch (RuntimeException e) {
Slog.w(TAG, "Exception thrown when destroying Window " + this
+ " surface " + mSurface + " session " + mSession
@@ -763,6 +760,7 @@ class WindowStateAnimator {
WindowManagerService.logSurface(mWin, "DESTROY PENDING", e);
}
mPendingDestroySurface.destroy();
+ mAnimator.hideWallpapersLocked(mWin);
}
} catch (RuntimeException e) {
Slog.w(TAG, "Exception thrown when destroying Window "
@@ -1067,11 +1065,8 @@ class WindowStateAnimator {
if (w.mAttachedHidden || !w.isReadyForDisplay()) {
hide();
- // TODO: Consider moving the following into hide() and out of finishExit() as well.
- if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
- mAnimator.hideWallpapersLocked();
- mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
- }
+ mAnimator.hideWallpapersLocked(w);
+
// If we are waiting for this window to handle an
// orientation change, well, it is hidden, so
// doesn't really matter. Note that this does