summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2014-11-07 12:13:02 -0800
committerWale Ogunwale <ogunwale@google.com>2014-11-12 08:42:09 -0800
commit3ae0d3157d5fdeee851f3e72b80f4ed57add0ff8 (patch)
tree955c8297f0881756b7a838c9514ccd0c01df031a /services
parent89444a380d85f8961a4a900734590571375b4f3f (diff)
downloadframeworks_base-3ae0d3157d5fdeee851f3e72b80f4ed57add0ff8.zip
frameworks_base-3ae0d3157d5fdeee851f3e72b80f4ed57add0ff8.tar.gz
frameworks_base-3ae0d3157d5fdeee851f3e72b80f4ed57add0ff8.tar.bz2
Fixed constant window switching on lock screen with Swype KB.
We allow TYPE_INPUT_METHOD windows to show on the lock screen. These windows can attached other types of windows (For this case the Swype KB was attaching a PopupWinow which will be of TYPE_APPLICATION). This causes the popup window app token to be added to the list of apps to be hidden on the lock screen, thereby preventing the lock screen from been hidden, which then causes a layout cycle(s). Now, we remove app tokens for non-app windows from the hidden list in case it was added by any attached widow they migth have. Also, when we are updating window animations, set the hideWhenLocked flag for windows that are IME tragets so they don't go through unneeded cycles of having their visibility policy set to hide/show/hide/show/... Bug: 18021493 Change-Id: I3680256d41793f62def42fda00e26db1dcc990cc
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/wm/WindowAnimator.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java2
2 files changed, 2 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index a90cc95..5deb1cd 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -333,7 +333,7 @@ public class WindowAnimator {
+ " hidden=" + win.mRootToken.hidden
+ " anim=" + win.mWinAnimator.mAnimation);
} else if (mPolicy.canBeForceHidden(win, win.mAttrs)) {
- final boolean hideWhenLocked = !((win.mIsImWindow && showImeOverKeyguard) ||
+ final boolean hideWhenLocked = !((win.mIsImWindow || imeTarget == win) && showImeOverKeyguard) ||
(appShowWhenLocked != null && (appShowWhenLocked == win.mAppToken ||
// Show error dialogs over apps that dismiss keyguard.
(win.mAttrs.privateFlags & PRIVATE_FLAG_SYSTEM_ERROR) != 0)));
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 1e492a5..eb418ed 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -9687,7 +9687,7 @@ public class WindowManagerService extends IWindowManager.Stub
for (i = windows.size() - 1; i >= 0; i--) {
WindowState w = windows.get(i);
if (w.mHasSurface) {
- mPolicy.applyPostLayoutPolicyLw(w, w.mAttrs);
+ mPolicy.applyPostLayoutPolicyLw(w, w.mAttrs, w.mAttachedWindow);
}
}
displayContent.pendingLayoutChanges |= mPolicy.finishPostLayoutPolicyLw();