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

This commit is contained in:
Jeff Brown
2012-08-25 13:46:49 -07:00
committed by Android (Google) Code Review
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_ELECTRON_BEAM = 1 << 1;
private static final int DIRTY_BRIGHTNESS = 1 << 2; private static final int DIRTY_BRIGHTNESS = 1 << 2;
private static final int DIRTY_ALL = 0xffffffff;
private final Choreographer mChoreographer; private final Choreographer mChoreographer;
private final ElectronBeam mElectronBeam; private final ElectronBeam mElectronBeam;
private final PhotonicModulator mScreenBrightnessModulator; private final PhotonicModulator mScreenBrightnessModulator;
@@ -68,10 +66,16 @@ final class DisplayPowerState {
mElectronBeam = electronBean; mElectronBeam = electronBean;
mScreenBrightnessModulator = screenBrightnessModulator; 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; mScreenOn = true;
mElectronBeamLevel = 1.0f; mElectronBeamLevel = 1.0f;
mScreenBrightness = PowerManager.BRIGHTNESS_ON; mScreenBrightness = PowerManager.BRIGHTNESS_ON;
invalidate(DIRTY_ALL); invalidate(DIRTY_BRIGHTNESS);
} }
public static final FloatProperty<DisplayPowerState> ELECTRON_BEAM_LEVEL = public static final FloatProperty<DisplayPowerState> ELECTRON_BEAM_LEVEL =

View File

@@ -296,6 +296,7 @@ public final class PowerManagerService extends IPowerManager.Stub
} }
nativeInit(); nativeInit();
nativeSetPowerState(true, true);
} }
/** /**
@@ -305,6 +306,14 @@ public final class PowerManagerService extends IPowerManager.Stub
public void init(Context context, LightsService ls, public void init(Context context, LightsService ls,
ActivityManagerService am, BatteryService bs, IBatteryStats bss, ActivityManagerService am, BatteryService bs, IBatteryStats bss,
DisplayManagerService dm) { 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; mContext = context;
mLightsService = ls; mLightsService = ls;
mBatteryService = bs; mBatteryService = bs;