From 48d1b14b7b54ae1491e7d9d5fdd9be8906c19a3c Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Wed, 10 Jun 2015 16:36:03 -0700 Subject: [PATCH] Pause activities when the screen is off. Bug: 19948628 Change-Id: I90923605d50f4ee381da4e05117879554e0a1dee --- .../server/policy/PhoneWindowManager.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 6e523588fff8f..25ca1671e161f 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -514,6 +514,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mDreamingLockscreen; boolean mDreamingSleepTokenNeeded; SleepToken mDreamingSleepToken; + SleepToken mScreenOffSleepToken; boolean mKeyguardSecure; boolean mKeyguardSecureIncludingHidden; volatile boolean mKeyguardOccluded; @@ -5385,6 +5386,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void screenTurnedOff() { if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turned off..."); + updateScreenOffSleepToken(true); synchronized (mLock) { mScreenOnEarly = false; mScreenOnFully = false; @@ -5399,6 +5401,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void screenTurningOn(final ScreenOnListener screenOnListener) { if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turning on..."); + updateScreenOffSleepToken(false); synchronized (mLock) { mScreenOnEarly = true; mScreenOnFully = false; @@ -6021,6 +6024,20 @@ public class PhoneWindowManager implements WindowManagerPolicy { } else { if (mDreamingSleepToken != null) { mDreamingSleepToken.release(); + mDreamingSleepToken = null; + } + } + } + + private void updateScreenOffSleepToken(boolean acquire) { + if (acquire) { + if (mScreenOffSleepToken == null) { + mScreenOffSleepToken = mActivityManagerInternal.acquireSleepToken("ScreenOff"); + } + } else { + if (mScreenOffSleepToken != null) { + mScreenOffSleepToken.release(); + mScreenOffSleepToken = null; } } }