Merge "Initialize screen state earlier in the boot process." into jb-mr1-dev
This commit is contained in:
@@ -49,8 +49,6 @@ final class DisplayPowerState {
|
||||
private static final int DIRTY_ELECTRON_BEAM = 1 << 1;
|
||||
private static final int DIRTY_BRIGHTNESS = 1 << 2;
|
||||
|
||||
private static final int DIRTY_ALL = 0xffffffff;
|
||||
|
||||
private final Choreographer mChoreographer;
|
||||
private final ElectronBeam mElectronBeam;
|
||||
private final PhotonicModulator mScreenBrightnessModulator;
|
||||
@@ -68,10 +66,16 @@ final class DisplayPowerState {
|
||||
mElectronBeam = electronBean;
|
||||
mScreenBrightnessModulator = screenBrightnessModulator;
|
||||
|
||||
// At boot time, we know that the screen is on and the electron beam
|
||||
// animation is not playing. We don't know the screen's brightness though,
|
||||
// so prepare to set it to a known state when the state is next applied.
|
||||
// Although we set the brightness to full on here, the display power controller
|
||||
// will reset the brightness to a new level immediately before the changes
|
||||
// actually have a chance to be applied.
|
||||
mScreenOn = true;
|
||||
mElectronBeamLevel = 1.0f;
|
||||
mScreenBrightness = PowerManager.BRIGHTNESS_ON;
|
||||
invalidate(DIRTY_ALL);
|
||||
invalidate(DIRTY_BRIGHTNESS);
|
||||
}
|
||||
|
||||
public static final FloatProperty<DisplayPowerState> ELECTRON_BEAM_LEVEL =
|
||||
|
||||
@@ -296,6 +296,7 @@ public final class PowerManagerService extends IPowerManager.Stub
|
||||
}
|
||||
|
||||
nativeInit();
|
||||
nativeSetPowerState(true, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -305,6 +306,14 @@ public final class PowerManagerService extends IPowerManager.Stub
|
||||
public void init(Context context, LightsService ls,
|
||||
ActivityManagerService am, BatteryService bs, IBatteryStats bss,
|
||||
DisplayManagerService dm) {
|
||||
// Forcibly turn the screen on at boot so that it is in a known power state.
|
||||
// We do this in init() rather than in the constructor because setting the
|
||||
// screen state requires a call into surface flinger which then needs to call back
|
||||
// into the activity manager to check permissions. Unfortunately the
|
||||
// activity manager is not running when the constructor is called, so we
|
||||
// have to defer setting the screen state until this point.
|
||||
nativeSetScreenState(true);
|
||||
|
||||
mContext = context;
|
||||
mLightsService = ls;
|
||||
mBatteryService = bs;
|
||||
|
||||
Reference in New Issue
Block a user