From d9268e3f012b0c98cf27cff2aa2a0b774fb59603 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Mon, 17 Nov 2014 17:40:59 -0800 Subject: Always wake device on power key from non interactive immediately. Bug: 18410573 Change-Id: Ic5ec4a1ac6d5e06fed8eb0c5cc6b2741e03b7f53 --- .../android/internal/policy/impl/PhoneWindowManager.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'policy/src') diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 627d1d5..54fb89d 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -316,6 +316,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // handler thread. We'll need to resolve this someday by teaching the input dispatcher // to hold wakelocks during dispatch and eliminating the critical path. volatile boolean mPowerKeyHandled; + volatile boolean mBeganFromNonInteractive; volatile int mPowerKeyPressCounter; volatile boolean mEndCallKeyHandled; @@ -877,15 +878,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { ViewConfiguration.get(mContext).getDeviceGlobalActionKeyTimeout()); } } else { - // When non-interactive, we ordinarily wake up immediately and - // consume the key. However on some devices we need to support multi-press - // without waking so we will delay handling for later in that case - // (at the cost of increased latency). + wakeUpFromPowerKey(event.getDownTime()); final int maxCount = getMaxMultiPressPowerCount(); + if (maxCount <= 1) { - // No other actions. We can wake immediately. - wakeUpFromPowerKey(event.getDownTime()); mPowerKeyHandled = true; + } else { + mBeganFromNonInteractive = true; } } } @@ -922,6 +921,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void finishPowerKeyPress() { + mBeganFromNonInteractive = false; mPowerKeyPressCounter = 0; if (mPowerKeyWakeLock.isHeld()) { mPowerKeyWakeLock.release(); @@ -946,9 +946,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { powerMultiPressAction(eventTime, interactive, mDoublePressOnPowerBehavior); } else if (count == 3) { powerMultiPressAction(eventTime, interactive, mTriplePressOnPowerBehavior); - } else if (!interactive) { - wakeUpFromPowerKey(eventTime); - } else { + } else if (interactive && !mBeganFromNonInteractive) { switch (mShortPressOnPowerBehavior) { case SHORT_PRESS_POWER_NOTHING: break; -- cgit v1.1