diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java index a2438552e8af6..60e381a776d24 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java @@ -149,6 +149,14 @@ public class DozeScrimController implements StateListener { mHandler.removeCallbacks(mPulseOut); } + /** + * When pulsing, cancel any timeouts that would take you out of the pulsing state. + */ + public void cancelPendingPulseTimeout() { + mHandler.removeCallbacks(mPulseOut); + mHandler.removeCallbacks(mPulseOutExtended); + } + private void cancelPulsing() { if (mPulseCallback != null) { if (DEBUG) Log.d(TAG, "Cancel pulsing"); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 213475fe3ca69..81e1d76a8cce0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1568,9 +1568,10 @@ public class StatusBar extends SystemUI implements DemoMode, @Override public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) { mEntryManager.updateNotifications(); - if (isDozing()) { - if (isHeadsUp) { - mDozeServiceHost.fireNotificationPulse(); + if (isDozing() && isHeadsUp) { + mDozeServiceHost.fireNotificationPulse(); + if (mPulsing) { + mDozeScrimController.cancelPendingPulseTimeout(); } } if (!isHeadsUp && !mHeadsUpManager.hasNotifications()) {