Merge "Set backlight brightness in correct order." into jb-mr1-dev

This commit is contained in:
Iliyan Malchev
2012-09-16 16:27:47 -07:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 7 deletions

View File

@@ -239,6 +239,7 @@ final class DisplayPowerState {
private void apply() {
if (mDirty != 0) {
if ((mDirty & DIRTY_SCREEN_ON) != 0 && !mScreenOn) {
mScreenBrightnessModulator.setBrightness(0, true /*sync*/);
PowerManagerService.nativeSetScreenState(false);
}
@@ -246,15 +247,16 @@ final class DisplayPowerState {
mElectronBeam.draw(mElectronBeamLevel);
}
if ((mDirty & (DIRTY_BRIGHTNESS | DIRTY_SCREEN_ON | DIRTY_ELECTRON_BEAM)) != 0) {
mScreenBrightnessModulator.setBrightness(mScreenOn ?
(int)(mScreenBrightness * mElectronBeamLevel) : 0);
}
if ((mDirty & DIRTY_SCREEN_ON) != 0 && mScreenOn) {
PowerManagerService.nativeSetScreenState(true);
}
if ((mDirty & (DIRTY_BRIGHTNESS | DIRTY_SCREEN_ON | DIRTY_ELECTRON_BEAM)) != 0
&& mScreenOn) {
mScreenBrightnessModulator.setBrightness(
(int)(mScreenBrightness * mElectronBeamLevel), false /*sync*/);
}
mDirty = 0;
if (mCleanListener != null) {

View File

@@ -49,11 +49,12 @@ final class PhotonicModulator {
}
/**
* Asynchronously sets the backlight brightness.
* Sets the backlight brightness, synchronously or asynchronously.
*
* @param lightValue The new light value, from 0 to 255.
* @param sync If true, waits for the brightness change to complete before returning.
*/
public void setBrightness(int lightValue) {
public void setBrightness(int lightValue, boolean sync) {
synchronized (mLock) {
if (lightValue != mPendingLightValue) {
mPendingLightValue = lightValue;
@@ -63,6 +64,15 @@ final class PhotonicModulator {
mExecutor.execute(mTask);
}
}
if (sync) {
while (mPendingChange) {
try {
mLock.wait();
} catch (InterruptedException ex) {
// ignore it
}
}
}
}
}
@@ -76,6 +86,7 @@ final class PhotonicModulator {
if (newLightValue == mActualLightValue) {
mSuspendBlocker.release();
mPendingChange = false;
mLock.notifyAll();
return;
}
mActualLightValue = newLightValue;