From 170997a519ce79e93e4f6984e9663232475ce92c Mon Sep 17 00:00:00 2001 From: Justin Ho Date: Thu, 19 Jan 2012 13:48:18 -0800 Subject: DO NOT MERGE Revert "Fix issue #5823276: home repaints after full-screen app is exited" This reverts commit 01b02a734d2988c22b00f5df6346ad03d8bf52b6. Change-Id: I848c01fc44eb9a51ead1116b2647ed838ec1825f --- core/java/android/view/WindowManagerPolicy.java | 5 ---- .../internal/policy/impl/PhoneWindowManager.java | 6 ++-- .../android/server/wm/WindowManagerService.java | 32 ++++++++++------------ .../java/com/android/server/wm/WindowState.java | 10 ------- 4 files changed, 17 insertions(+), 36 deletions(-) diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index cbaa3df..41c225d 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -298,11 +298,6 @@ public interface WindowManagerPolicy { boolean isDisplayedLw(); /** - * Is this window considered to be gone for purposes of layout? - */ - boolean isGoneForLayoutLw(); - - /** * Returns true if this window has been shown on screen at some time in * the past. Must be called with the window manager lock held. * diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 7c9f0b5..6e16391 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -2336,7 +2336,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisibleOrBehindKeyguardLw=" + win.isVisibleOrBehindKeyguardLw()); if (mTopFullscreenOpaqueWindowState == null && - win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw()) { + win.isVisibleOrBehindKeyguardLw()) { if ((attrs.flags & FLAG_FORCE_NOT_FULLSCREEN) != 0) { mForceStatusBar = true; } @@ -2391,7 +2391,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // case though. if (topIsFullscreen) { if (mStatusBarCanHide) { - if (DEBUG_LAYOUT) Log.v(TAG, "** HIDING status bar"); + if (DEBUG_LAYOUT) Log.v(TAG, "Hiding status bar"); if (mStatusBar.hideLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; @@ -2407,7 +2407,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { Log.v(TAG, "Preventing status bar from hiding by policy"); } } else { - if (DEBUG_LAYOUT) Log.v(TAG, "** SHOWING status bar: top is not fullscreen"); + if (DEBUG_LAYOUT) Log.v(TAG, "Showing status bar: top is not fullscreen"); if (mStatusBar.showLw(true)) changes |= FINISH_LAYOUT_REDO_LAYOUT; } } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 4dcf59b..9fb064f 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -7391,11 +7391,8 @@ public class WindowManagerService extends IWindowManager.Stub final int N = mWindows.size(); int i; - if (DEBUG_LAYOUT) { - Slog.v(TAG, "-------------------------------------"); - Slog.v(TAG, "performLayout: needed=" - + mLayoutNeeded + " dw=" + dw + " dh=" + dh); - } + if (DEBUG_LAYOUT) Slog.v(TAG, "performLayout: needed=" + + mLayoutNeeded + " dw=" + dw + " dh=" + dh); mPolicy.beginLayoutLw(dw, dh, mRotation); @@ -7412,20 +7409,19 @@ public class WindowManagerService extends IWindowManager.Stub // Don't do layout of a window if it is not visible, or // soon won't be visible, to avoid wasting time and funky // changes while a window is animating away. - final boolean gone = win.isGoneForLayoutLw(); + final AppWindowToken atoken = win.mAppToken; + final boolean gone = win.mViewVisibility == View.GONE + || !win.mRelayoutCalled + || (atoken == null && win.mRootToken.hidden) + || (atoken != null && atoken.hiddenRequested) + || win.mAttachedHidden + || win.mExiting || win.mDestroying; if (DEBUG_LAYOUT && !win.mLayoutAttached) { - Slog.v(TAG, "1ST PASS " + win + Slog.v(TAG, "First pass " + win + ": gone=" + gone + " mHaveFrame=" + win.mHaveFrame + " mLayoutAttached=" + win.mLayoutAttached); - final AppWindowToken atoken = win.mAppToken; - if (gone) Slog.v(TAG, " GONE: mViewVisibility=" - + win.mViewVisibility + " mRelayoutCalled=" - + win.mRelayoutCalled + " hidden=" - + win.mRootToken.hidden + " hiddenRequested=" - + (atoken != null && atoken.hiddenRequested) - + " mAttachedHidden=" + win.mAttachedHidden); - else Slog.v(TAG, " VIS: mViewVisibility=" + if (gone) Slog.v(TAG, " (mViewVisibility=" + win.mViewVisibility + " mRelayoutCalled=" + win.mRelayoutCalled + " hidden=" + win.mRootToken.hidden + " hiddenRequested=" @@ -7447,7 +7443,7 @@ public class WindowManagerService extends IWindowManager.Stub win.prelayout(); mPolicy.layoutWindowLw(win, win.mAttrs, null); win.mLayoutSeq = seq; - if (DEBUG_LAYOUT) Slog.v(TAG, " LAYOUT: mFrame=" + if (DEBUG_LAYOUT) Slog.v(TAG, "-> mFrame=" + win.mFrame + " mContainingFrame=" + win.mContainingFrame + " mDisplayFrame=" + win.mDisplayFrame); @@ -7465,7 +7461,7 @@ public class WindowManagerService extends IWindowManager.Stub WindowState win = mWindows.get(i); if (win.mLayoutAttached) { - if (DEBUG_LAYOUT) Slog.v(TAG, "2ND PASS " + win + if (DEBUG_LAYOUT) Slog.v(TAG, "Second pass " + win + " mHaveFrame=" + win.mHaveFrame + " mViewVisibility=" + win.mViewVisibility + " mRelayoutCalled=" + win.mRelayoutCalled); @@ -7483,7 +7479,7 @@ public class WindowManagerService extends IWindowManager.Stub win.prelayout(); mPolicy.layoutWindowLw(win, win.mAttrs, win.mAttachedWindow); win.mLayoutSeq = seq; - if (DEBUG_LAYOUT) Slog.v(TAG, " LAYOUT: mFrame=" + if (DEBUG_LAYOUT) Slog.v(TAG, "-> mFrame=" + win.mFrame + " mContainingFrame=" + win.mContainingFrame + " mDisplayFrame=" + win.mDisplayFrame); diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 794515b..75bda41 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -1444,16 +1444,6 @@ final class WindowState implements WindowManagerPolicy.WindowState { || mAnimating); } - public boolean isGoneForLayoutLw() { - final AppWindowToken atoken = mAppToken; - return mViewVisibility == View.GONE - || !mRelayoutCalled - || (atoken == null && mRootToken.hidden) - || (atoken != null && (atoken.hiddenRequested || atoken.hidden)) - || mAttachedHidden - || mExiting || mDestroying; - } - /** * Returns true if the window has a surface that it has drawn a * complete UI in to. -- cgit v1.1