diff options
| author | 2016-05-23 18:59:03 +0000 | |
|---|---|---|
| committer | 2016-05-23 18:59:04 +0000 | |
| commit | 18ef5431026365dd3b53a505fc57f538cf8dd48e (patch) | |
| tree | d5f4f0cb0bb9e5a36fac4d86eea57f1afa34d927 | |
| parent | 28d9ef811291921ddb22e7b4b92e1222e673154e (diff) | |
| parent | e292eb3d4d0a2809b760eb849dc77c0f47e9494c (diff) | |
Merge "Don't include removed window when counting interesting windows" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 82cd0fa0c25d..aaed8ca9181d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2359,7 +2359,13 @@ public class WindowManagerService extends IWindowManager.Stub // immediately after the enter animation is done. If the app is not yet drawn then // it will show up as a flicker. win.mRemoveOnExit = true; - win.mWindowRemovalAllowed = true; + // Request a focus update as this window's input channel is already gone. Otherwise + // we could have no focused window in input manager. + final boolean focusChanged = updateFocusedWindowLocked( + UPDATE_FOCUS_WILL_PLACE_SURFACES, false /*updateInputWindows*/); + if (focusChanged) { + mInputMonitor.updateInputWindowsLw(false /*force*/); + } Binder.restoreCallingIdentity(origId); return; } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index e5e74a663eb0..c15afb339646 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1265,8 +1265,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { * @return true if the window should be considered while evaluating allDrawn flags. */ boolean mightAffectAllDrawn(boolean visibleOnly) { - final boolean isViewVisible = (mViewVisibility == View.VISIBLE) - && (mAppToken == null || !mAppToken.clientHidden); + final boolean isViewVisible = (mAppToken == null || !mAppToken.clientHidden) + && (mViewVisibility == View.VISIBLE) && !mWindowRemovalAllowed; return (isOnScreenIgnoringKeyguard() && (!visibleOnly || isViewVisible) || mWinAnimator.mAttrType == TYPE_BASE_APPLICATION) && !mAnimatingExit && !mDestroying; @@ -1822,7 +1822,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { /** @return true if this window desires key events. */ boolean canReceiveKeys() { return isVisibleOrAdding() - && (mViewVisibility == View.VISIBLE) + && (mViewVisibility == View.VISIBLE) && !mRemoveOnExit && ((mAttrs.flags & WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) == 0) && (mAppToken == null || mAppToken.windowsAreFocusable()) && !isAdjustedForMinimizedDock(); |