Merge "Avoid changing display power state on draw wake lock" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a71712dfa8
@@ -141,6 +141,14 @@ public abstract class PowerManagerInternal {
|
||||
public abstract void setDozeOverrideFromDreamManager(
|
||||
int screenState, int screenBrightness);
|
||||
|
||||
/**
|
||||
* Used by sidekick manager to tell the power manager if it shouldn't change the display state
|
||||
* when a draw wake lock is acquired. Some processes may grab such a wake lock to do some work
|
||||
* in a powered-up state, but we shouldn't give up sidekick control over the display until this
|
||||
* override is lifted.
|
||||
*/
|
||||
public abstract void setDrawWakeLockOverrideFromSidekick(boolean keepState);
|
||||
|
||||
public abstract PowerSaveState getLowPowerState(int serviceType);
|
||||
|
||||
public abstract void registerLowPowerModeObserver(LowPowerModeListener listener);
|
||||
|
||||
@@ -315,4 +315,6 @@ message PowerServiceSettingsAndConfigurationDumpProto {
|
||||
optional bool is_double_tap_wake_enabled = 37;
|
||||
// True if we are currently in VR Mode.
|
||||
optional bool is_vr_mode_enabled = 38;
|
||||
// True if Sidekick is controlling the display and we shouldn't change its power mode.
|
||||
optional bool draw_wake_lock_override_from_sidekick = 39;
|
||||
}
|
||||
|
||||
@@ -487,6 +487,9 @@ public final class PowerManagerService extends SystemService
|
||||
// The screen brightness to use while dozing.
|
||||
private int mDozeScreenBrightnessOverrideFromDreamManager = PowerManager.BRIGHTNESS_DEFAULT;
|
||||
|
||||
// Keep display state when dozing.
|
||||
private boolean mDrawWakeLockOverrideFromSidekick;
|
||||
|
||||
// Time when we last logged a warning about calling userActivity() without permission.
|
||||
private long mLastWarningAboutUserActivityPermission = Long.MIN_VALUE;
|
||||
|
||||
@@ -2423,7 +2426,8 @@ public final class PowerManagerService extends SystemService
|
||||
|
||||
if (mDisplayPowerRequest.policy == DisplayPowerRequest.POLICY_DOZE) {
|
||||
mDisplayPowerRequest.dozeScreenState = mDozeScreenStateOverrideFromDreamManager;
|
||||
if ((mWakeLockSummary & WAKE_LOCK_DRAW) != 0) {
|
||||
if ((mWakeLockSummary & WAKE_LOCK_DRAW) != 0
|
||||
&& !mDrawWakeLockOverrideFromSidekick) {
|
||||
if (mDisplayPowerRequest.dozeScreenState == Display.STATE_DOZE_SUSPEND) {
|
||||
mDisplayPowerRequest.dozeScreenState = Display.STATE_DOZE;
|
||||
}
|
||||
@@ -3176,6 +3180,16 @@ public final class PowerManagerService extends SystemService
|
||||
}
|
||||
}
|
||||
|
||||
private void setDrawWakeLockOverrideFromSidekickInternal(boolean keepState) {
|
||||
synchronized (mLock) {
|
||||
if (mDrawWakeLockOverrideFromSidekick != keepState) {
|
||||
mDrawWakeLockOverrideFromSidekick = keepState;
|
||||
mDirty |= DIRTY_SETTINGS;
|
||||
updatePowerStateLocked();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setVrModeEnabled(boolean enabled) {
|
||||
mIsVrModeEnabled = enabled;
|
||||
@@ -3381,6 +3395,7 @@ public final class PowerManagerService extends SystemService
|
||||
+ mUserInactiveOverrideFromWindowManager);
|
||||
pw.println(" mDozeScreenStateOverrideFromDreamManager="
|
||||
+ mDozeScreenStateOverrideFromDreamManager);
|
||||
pw.println(" mDrawWakeLockOverrideFromSidekick=" + mDrawWakeLockOverrideFromSidekick);
|
||||
pw.println(" mDozeScreenBrightnessOverrideFromDreamManager="
|
||||
+ mDozeScreenBrightnessOverrideFromDreamManager);
|
||||
pw.println(" mScreenBrightnessSettingMinimum=" + mScreenBrightnessSettingMinimum);
|
||||
@@ -3715,6 +3730,10 @@ public final class PowerManagerService extends SystemService
|
||||
PowerServiceSettingsAndConfigurationDumpProto
|
||||
.DOZE_SCREEN_STATE_OVERRIDE_FROM_DREAM_MANAGER,
|
||||
mDozeScreenStateOverrideFromDreamManager);
|
||||
proto.write(
|
||||
PowerServiceSettingsAndConfigurationDumpProto
|
||||
.DRAW_WAKE_LOCK_OVERRIDE_FROM_SIDEKICK,
|
||||
mDrawWakeLockOverrideFromSidekick);
|
||||
proto.write(
|
||||
PowerServiceSettingsAndConfigurationDumpProto
|
||||
.DOZED_SCREEN_BRIGHTNESS_OVERRIDE_FROM_DREAM_MANAGER,
|
||||
@@ -4702,6 +4721,11 @@ public final class PowerManagerService extends SystemService
|
||||
setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDrawWakeLockOverrideFromSidekick(boolean keepState) {
|
||||
setDrawWakeLockOverrideFromSidekickInternal(keepState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaximumScreenOffTimeoutFromDeviceAdmin(@UserIdInt int userId, long timeMs) {
|
||||
setMaximumScreenOffTimeoutFromDeviceAdminInternal(userId, timeMs);
|
||||
|
||||
Reference in New Issue
Block a user