Fix issue where AOD would not start
We shouldn't mix wakefulness with dream states, they come asynchronously from different parts of the system. This means that the device might not be GOING_TO_SLEEP when DozeService is started. We also can't rely on wakefulness to drive Doze animations. Test: unlock with fingerprint Test: press power from launcher and lock screen multiple times Fixes: 152835247 Change-Id: I3eaf2ae1801bbb999a6466c214234f33804ccf19
This commit is contained in:
@@ -57,27 +57,27 @@ public interface KeyguardViewController {
|
||||
/**
|
||||
* Called when the device started going to sleep.
|
||||
*/
|
||||
void onStartedGoingToSleep();
|
||||
default void onStartedGoingToSleep() {};
|
||||
|
||||
/**
|
||||
* Called when the device has finished going to sleep.
|
||||
*/
|
||||
void onFinishedGoingToSleep();
|
||||
default void onFinishedGoingToSleep() {};
|
||||
|
||||
/**
|
||||
* Called when the device started waking up.
|
||||
*/
|
||||
void onStartedWakingUp();
|
||||
default void onStartedWakingUp() {};
|
||||
|
||||
/**
|
||||
* Called when the device started turning on.
|
||||
*/
|
||||
void onScreenTurningOn();
|
||||
default void onScreenTurningOn() {};
|
||||
|
||||
/**
|
||||
* Called when the device has finished turning on.
|
||||
*/
|
||||
void onScreenTurnedOn();
|
||||
default void onScreenTurnedOn() {};
|
||||
|
||||
/**
|
||||
* Sets whether the Keyguard needs input.
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.systemui.doze;
|
||||
|
||||
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
|
||||
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING;
|
||||
|
||||
import android.annotation.MainThread;
|
||||
import android.hardware.display.AmbientDisplayConfiguration;
|
||||
import android.os.Trace;
|
||||
@@ -368,8 +371,8 @@ public class DozeMachine {
|
||||
case DOZE_PULSE_DONE:
|
||||
final State nextState;
|
||||
@Wakefulness int wakefulness = mWakefulnessLifecycle.getWakefulness();
|
||||
if (wakefulness == WakefulnessLifecycle.WAKEFULNESS_AWAKE
|
||||
|| wakefulness == WakefulnessLifecycle.WAKEFULNESS_WAKING) {
|
||||
if (state != State.INITIALIZED && (wakefulness == WAKEFULNESS_AWAKE
|
||||
|| wakefulness == WAKEFULNESS_WAKING)) {
|
||||
nextState = State.FINISH;
|
||||
} else if (mDockManager.isDocked()) {
|
||||
nextState = mDockManager.isHidden() ? State.DOZE : State.DOZE_AOD_DOCKED;
|
||||
|
||||
@@ -3333,12 +3333,12 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
Trace.traceCounter(Trace.TRACE_TAG_APP, "dozing", mDozing ? 1 : 0);
|
||||
Trace.beginSection("StatusBar#updateDozingState");
|
||||
|
||||
boolean sleepingFromKeyguard =
|
||||
mStatusBarKeyguardViewManager.isGoingToSleepVisibleNotOccluded();
|
||||
boolean visibleNotOccluded = mStatusBarKeyguardViewManager.isShowing()
|
||||
&& !mStatusBarKeyguardViewManager.isOccluded();
|
||||
boolean wakeAndUnlock = mBiometricUnlockController.getMode()
|
||||
== BiometricUnlockController.MODE_WAKE_AND_UNLOCK;
|
||||
boolean animate = (!mDozing && mDozeServiceHost.shouldAnimateWakeup() && !wakeAndUnlock)
|
||||
|| (mDozing && mDozeServiceHost.shouldAnimateScreenOff() && sleepingFromKeyguard);
|
||||
|| (mDozing && mDozeServiceHost.shouldAnimateScreenOff() && visibleNotOccluded);
|
||||
|
||||
mNotificationPanelViewController.setDozing(mDozing, animate, mWakeUpTouchLocation);
|
||||
updateQsExpansionEnabled();
|
||||
|
||||
@@ -168,7 +168,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
private boolean mLastIsDocked;
|
||||
private boolean mLastPulsing;
|
||||
private int mLastBiometricMode;
|
||||
private boolean mGoingToSleepVisibleNotOccluded;
|
||||
private boolean mLastLockVisible;
|
||||
|
||||
private OnDismissAction mAfterKeyguardGoneAction;
|
||||
@@ -450,36 +449,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isGoingToSleepVisibleNotOccluded() {
|
||||
return mGoingToSleepVisibleNotOccluded;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartedGoingToSleep() {
|
||||
mGoingToSleepVisibleNotOccluded = isShowing() && !isOccluded();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinishedGoingToSleep() {
|
||||
mGoingToSleepVisibleNotOccluded = false;
|
||||
mBouncer.onScreenTurnedOff();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartedWakingUp() {
|
||||
// TODO: remove
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScreenTurningOn() {
|
||||
// TODO: remove
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScreenTurnedOn() {
|
||||
// TODO: remove
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteInputActive(boolean active) {
|
||||
mRemoteInputActive = active;
|
||||
@@ -999,7 +973,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
pw.println(" mOccluded: " + mOccluded);
|
||||
pw.println(" mRemoteInputActive: " + mRemoteInputActive);
|
||||
pw.println(" mDozing: " + mDozing);
|
||||
pw.println(" mGoingToSleepVisibleNotOccluded: " + mGoingToSleepVisibleNotOccluded);
|
||||
pw.println(" mAfterKeyguardGoneAction: " + mAfterKeyguardGoneAction);
|
||||
pw.println(" mAfterKeyguardGoneRunnables: " + mAfterKeyguardGoneRunnables);
|
||||
pw.println(" mPendingWakeupAction: " + mPendingWakeupAction);
|
||||
|
||||
Reference in New Issue
Block a user