am d59db50a: Merge "Initialize screen state earlier in the boot process." into jb-mr1-dev

* commit 'd59db50ab0c3c7a232b2a564e763ca46c6f6ebfa':
  Initialize screen state earlier in the boot process.
This commit is contained in:
Jeff Brown
2012-08-25 13:50:23 -07:00
committed by Android Git Automerger
2 changed files with 16 additions and 3 deletions

View File

@@ -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 =

View File

@@ -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;