From c4c8baae786c3421e36889888b5c54641ad1bd8d Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Wed, 6 Sep 2017 14:55:48 -0700 Subject: [PATCH] Do not process set WindowAnimator param when screen is already on. Doing so can lead to the param be processed during onPause, potentially causing the device erroneously waking up. Change-Id: Id0f0bc74873e6e41bd2b10dc423a435ca050947f Fixes: 65412431 Bug: 65385210 Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerActivityVisibilityTests#testTurnScreenOnActivity_withRelayout --- .../core/java/com/android/server/wm/WindowStateAnimator.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index dd887e0c0882..64ac7ac90db2 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1657,7 +1657,14 @@ class WindowStateAnimator { if (mWin.mAppToken != null) { mWin.mAppToken.setCanTurnScreenOn(false); } - mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + + // We do not add {@code SET_TURN_ON_SCREEN} when the screen is already + // interactive as the value may persist until the next animation, which could + // potentially occurring while turning off the screen. This would lead to the + // screen incorrectly turning back on. + if (!mService.mPowerManager.isInteractive()) { + mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + } } } if (hasSurface()) { -- 2.11.0