From 9dc06cc2a800905619470030e0f2528aa239c113 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 17 Nov 2009 18:19:23 -0800 Subject: [PATCH] Fix issue #2264162 and #2252436: Now playing screens problems when locked. We now treat the case where the lock screen is hidden to be basically the same as it being removed for purposes of event dispatching and other things in the policy. Change-Id: I7386220594ad6e89e1493d643b1f0603663ae72a --- .../internal/policy/impl/KeyguardViewMediator.java | 7 +++++++ .../internal/policy/impl/PhoneWindowManager.java | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java index 8d60e0ecdd49b..6b9db604ee99d 100644 --- a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -421,6 +421,13 @@ public class KeyguardViewMediator implements KeyguardViewCallback, return mShowing; } + /** + * Is the keyguard currently showing and not being force hidden? + */ + public boolean isShowingAndNotHidden() { + return mShowing && !mHidden; + } + /** * Notify us when the keyguard is hidden by another window */ diff --git a/policy/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/com/android/internal/policy/impl/PhoneWindowManager.java index 470987fc270b3..987e280c19ddc 100755 --- a/policy/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/com/android/internal/policy/impl/PhoneWindowManager.java @@ -441,7 +441,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mGlobalActions == null) { mGlobalActions = new GlobalActions(mContext); } - final boolean keyguardShowing = mKeyguardMediator.isShowing(); + final boolean keyguardShowing = mKeyguardMediator.isShowingAndNotHidden(); mGlobalActions.showDialog(keyguardShowing, isDeviceProvisioned()); if (keyguardShowing) { // since it took two seconds of long press to bring this up, @@ -1108,7 +1108,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { * given the situation with the keyguard. */ void launchHomeFromHotKey() { - if (!mHideLockScreen && mKeyguardMediator.isShowing()) { + if (mKeyguardMediator.isShowingAndNotHidden()) { // don't launch home if keyguard showing } else if (!mHideLockScreen && mKeyguardMediator.isInputRestricted()) { // when in keyguard restricted mode, must first verify unlock @@ -1923,7 +1923,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public boolean keyguardIsShowingTq() { - return mKeyguardMediator.isShowing(); + return mKeyguardMediator.isShowingAndNotHidden(); } /** {@inheritDoc} */ @@ -2193,7 +2193,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) { final boolean hapticsDisabled = Settings.System.getInt(mContext.getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) == 0; - if (!always && (hapticsDisabled || mKeyguardMediator.isShowing())) { + if (!always && (hapticsDisabled || mKeyguardMediator.isShowingAndNotHidden())) { return false; } switch (effectId) { @@ -2221,7 +2221,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } public void screenOnStoppedLw() { - if (!mKeyguardMediator.isShowing() && mPowerManager.isScreenOn()) { + if (!mKeyguardMediator.isShowingAndNotHidden() && mPowerManager.isScreenOn()) { long curTime = SystemClock.uptimeMillis(); mPowerManager.userActivity(curTime, false, LocalPowerManager.OTHER_EVENT); }