diff options
author | tiger_huang <tiger_huang@htc.com> | 2015-07-02 21:52:40 +0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-11-07 05:40:42 -0800 |
commit | ebeb70d9d62782e82b1183ed2e1aa405da0294d7 (patch) | |
tree | ea70c143a511e3aab47f9691608831c6dbc66dba | |
parent | a89ab17abc9cf5de6c8584fa84f4684d6e3b279d (diff) | |
download | frameworks_base-ebeb70d9d62782e82b1183ed2e1aa405da0294d7.zip frameworks_base-ebeb70d9d62782e82b1183ed2e1aa405da0294d7.tar.gz frameworks_base-ebeb70d9d62782e82b1183ed2e1aa405da0294d7.tar.bz2 |
Ensure the occlude state of keyguard is correct
If the keyguard is dismissed by an app with FLAG_DISMISS_KEYGUARD,
PhoneWindowManager would set keyguard to be occluded. After the user
changes to another app without FLAG_DISMISS_KEYGUARD, the occlude
state should be cleared, even keyguard is not showing.
https://code.google.com/p/android/issues/detail?id=178617
Change-Id: I84fc86ae5c95c122c98445b76495735adbdcaeba
-rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index cbd821f..bf1afc1 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -5293,22 +5293,24 @@ public class PhoneWindowManager implements WindowManagerPolicy { */ private boolean setKeyguardOccludedLw(boolean isOccluded) { boolean wasOccluded = mKeyguardOccluded; - boolean showing = mKeyguardDelegate.isShowing(); - if (wasOccluded && !isOccluded && showing) { + if (wasOccluded && !isOccluded) { mKeyguardOccluded = false; mKeyguardDelegate.setOccluded(false); - mStatusBar.getAttrs().privateFlags |= PRIVATE_FLAG_KEYGUARD; - mStatusBar.getAttrs().flags |= FLAG_SHOW_WALLPAPER; - return true; - } else if (!wasOccluded && isOccluded && showing) { + if (mKeyguardDelegate.isShowing()) { + mStatusBar.getAttrs().privateFlags |= PRIVATE_FLAG_KEYGUARD; + mStatusBar.getAttrs().flags |= FLAG_SHOW_WALLPAPER; + return true; + } + } else if (!wasOccluded && isOccluded) { mKeyguardOccluded = true; mKeyguardDelegate.setOccluded(true); - mStatusBar.getAttrs().privateFlags &= ~PRIVATE_FLAG_KEYGUARD; - mStatusBar.getAttrs().flags &= ~FLAG_SHOW_WALLPAPER; - return true; - } else { - return false; + if (mKeyguardDelegate.isShowing()) { + mStatusBar.getAttrs().privateFlags &= ~PRIVATE_FLAG_KEYGUARD; + mStatusBar.getAttrs().flags &= ~FLAG_SHOW_WALLPAPER; + return true; + } } + return false; } private boolean isStatusBarKeyguard() { |