Merge "Make PowerManagerService use float for brightness" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
adbe11f6ac
@@ -102,9 +102,9 @@ public abstract class PowerManagerInternal {
|
|||||||
*
|
*
|
||||||
* This method must only be called by the window manager.
|
* This method must only be called by the window manager.
|
||||||
*
|
*
|
||||||
* @param brightness The overridden brightness, or -1 to disable the override.
|
* @param brightness The overridden brightness, or Float.NaN to disable the override.
|
||||||
*/
|
*/
|
||||||
public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness);
|
public abstract void setScreenBrightnessOverrideFromWindowManager(float brightness);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by the window manager to override the user activity timeout based on the
|
* Used by the window manager to override the user activity timeout based on the
|
||||||
|
|||||||
@@ -513,10 +513,7 @@ public final class PowerManagerService extends SystemService
|
|||||||
|
|
||||||
// The screen brightness setting override from the window manager
|
// The screen brightness setting override from the window manager
|
||||||
// to allow the current foreground activity to override the brightness.
|
// to allow the current foreground activity to override the brightness.
|
||||||
// Use -1 to disable.
|
private float mScreenBrightnessOverrideFromWindowManager =
|
||||||
private int mScreenBrightnessOverrideFromWindowManager = -1;
|
|
||||||
|
|
||||||
private float mScreenBrightnessOverrideFromWindowManagerFloat =
|
|
||||||
PowerManager.BRIGHTNESS_INVALID_FLOAT;
|
PowerManager.BRIGHTNESS_INVALID_FLOAT;
|
||||||
|
|
||||||
// The window manager has determined the user to be inactive via other means.
|
// The window manager has determined the user to be inactive via other means.
|
||||||
@@ -2846,7 +2843,7 @@ public final class PowerManagerService extends SystemService
|
|||||||
screenBrightnessOverride = mScreenBrightnessSettingDefault;
|
screenBrightnessOverride = mScreenBrightnessSettingDefault;
|
||||||
} else if (isValidBrightness(mScreenBrightnessOverrideFromWindowManager)) {
|
} else if (isValidBrightness(mScreenBrightnessOverrideFromWindowManager)) {
|
||||||
autoBrightness = false;
|
autoBrightness = false;
|
||||||
screenBrightnessOverride = mScreenBrightnessOverrideFromWindowManagerFloat;
|
screenBrightnessOverride = mScreenBrightnessOverrideFromWindowManager;
|
||||||
} else {
|
} else {
|
||||||
autoBrightness = (mScreenBrightnessModeSetting ==
|
autoBrightness = (mScreenBrightnessModeSetting ==
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
@@ -2927,8 +2924,8 @@ public final class PowerManagerService extends SystemService
|
|||||||
return !mIsVrModeEnabled && mScreenBrightnessBoostInProgress;
|
return !mIsVrModeEnabled && mScreenBrightnessBoostInProgress;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isValidBrightness(int value) {
|
private static boolean isValidBrightness(float value) {
|
||||||
return value >= 0 && value <= 255;
|
return value >= PowerManager.BRIGHTNESS_MIN && value <= PowerManager.BRIGHTNESS_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -3583,13 +3580,11 @@ public final class PowerManagerService extends SystemService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(brightnessfloat): change to float
|
private void setScreenBrightnessOverrideFromWindowManagerInternal(float brightness) {
|
||||||
private void setScreenBrightnessOverrideFromWindowManagerInternal(int brightness) {
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
if (mScreenBrightnessOverrideFromWindowManager != brightness) {
|
if (!BrightnessSynchronizer.floatEquals(mScreenBrightnessOverrideFromWindowManager,
|
||||||
|
brightness)) {
|
||||||
mScreenBrightnessOverrideFromWindowManager = brightness;
|
mScreenBrightnessOverrideFromWindowManager = brightness;
|
||||||
mScreenBrightnessOverrideFromWindowManagerFloat =
|
|
||||||
BrightnessSynchronizer.brightnessIntToFloat(mContext, brightness);
|
|
||||||
mDirty |= DIRTY_SETTINGS;
|
mDirty |= DIRTY_SETTINGS;
|
||||||
updatePowerStateLocked();
|
updatePowerStateLocked();
|
||||||
}
|
}
|
||||||
@@ -3890,8 +3885,8 @@ public final class PowerManagerService extends SystemService
|
|||||||
+ isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked() + ")");
|
+ isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked() + ")");
|
||||||
pw.println(" mStayOnWhilePluggedInSetting=" + mStayOnWhilePluggedInSetting);
|
pw.println(" mStayOnWhilePluggedInSetting=" + mStayOnWhilePluggedInSetting);
|
||||||
pw.println(" mScreenBrightnessModeSetting=" + mScreenBrightnessModeSetting);
|
pw.println(" mScreenBrightnessModeSetting=" + mScreenBrightnessModeSetting);
|
||||||
pw.println(" mScreenBrightnessOverrideFromWindowManagerFloat="
|
pw.println(" mScreenBrightnessOverrideFromWindowManager="
|
||||||
+ mScreenBrightnessOverrideFromWindowManagerFloat);
|
+ mScreenBrightnessOverrideFromWindowManager);
|
||||||
pw.println(" mUserActivityTimeoutOverrideFromWindowManager="
|
pw.println(" mUserActivityTimeoutOverrideFromWindowManager="
|
||||||
+ mUserActivityTimeoutOverrideFromWindowManager);
|
+ mUserActivityTimeoutOverrideFromWindowManager);
|
||||||
pw.println(" mUserInactiveOverrideFromWindowManager="
|
pw.println(" mUserInactiveOverrideFromWindowManager="
|
||||||
@@ -4231,7 +4226,7 @@ public final class PowerManagerService extends SystemService
|
|||||||
proto.write(
|
proto.write(
|
||||||
PowerServiceSettingsAndConfigurationDumpProto
|
PowerServiceSettingsAndConfigurationDumpProto
|
||||||
.SCREEN_BRIGHTNESS_OVERRIDE_FROM_WINDOW_MANAGER,
|
.SCREEN_BRIGHTNESS_OVERRIDE_FROM_WINDOW_MANAGER,
|
||||||
mScreenBrightnessOverrideFromWindowManagerFloat);
|
mScreenBrightnessOverrideFromWindowManager);
|
||||||
proto.write(
|
proto.write(
|
||||||
PowerServiceSettingsAndConfigurationDumpProto
|
PowerServiceSettingsAndConfigurationDumpProto
|
||||||
.USER_ACTIVITY_TIMEOUT_OVERRIDE_FROM_WINDOW_MANAGER_MS,
|
.USER_ACTIVITY_TIMEOUT_OVERRIDE_FROM_WINDOW_MANAGER_MS,
|
||||||
@@ -5430,10 +5425,10 @@ public final class PowerManagerService extends SystemService
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final class LocalService extends PowerManagerInternal {
|
final class LocalService extends PowerManagerInternal {
|
||||||
@Override
|
@Override
|
||||||
public void setScreenBrightnessOverrideFromWindowManager(int screenBrightness) {
|
public void setScreenBrightnessOverrideFromWindowManager(float screenBrightness) {
|
||||||
if (screenBrightness < PowerManager.BRIGHTNESS_DEFAULT
|
if (screenBrightness < PowerManager.BRIGHTNESS_MIN
|
||||||
|| screenBrightness > PowerManager.BRIGHTNESS_ON) {
|
|| screenBrightness > PowerManager.BRIGHTNESS_MAX) {
|
||||||
screenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
|
screenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
|
||||||
}
|
}
|
||||||
setScreenBrightnessOverrideFromWindowManagerInternal(screenBrightness);
|
setScreenBrightnessOverrideFromWindowManagerInternal(screenBrightness);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
|
|
||||||
private Object mLastWindowFreezeSource = null;
|
private Object mLastWindowFreezeSource = null;
|
||||||
private Session mHoldScreen = null;
|
private Session mHoldScreen = null;
|
||||||
private float mScreenBrightness = -1;
|
private float mScreenBrightnessOverride = PowerManager.BRIGHTNESS_INVALID_FLOAT;
|
||||||
private long mUserActivityTimeout = -1;
|
private long mUserActivityTimeout = -1;
|
||||||
private boolean mUpdateRotation = false;
|
private boolean mUpdateRotation = false;
|
||||||
// Following variables are for debugging screen wakelock only.
|
// Following variables are for debugging screen wakelock only.
|
||||||
@@ -826,7 +826,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
}
|
}
|
||||||
|
|
||||||
mHoldScreen = null;
|
mHoldScreen = null;
|
||||||
mScreenBrightness = -1;
|
mScreenBrightnessOverride = PowerManager.BRIGHTNESS_INVALID_FLOAT;
|
||||||
mUserActivityTimeout = -1;
|
mUserActivityTimeout = -1;
|
||||||
mObscureApplicationContentOnSecondaryDisplays = false;
|
mObscureApplicationContentOnSecondaryDisplays = false;
|
||||||
mSustainedPerformanceModeCurrent = false;
|
mSustainedPerformanceModeCurrent = false;
|
||||||
@@ -936,12 +936,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
|
|
||||||
mWmService.setHoldScreenLocked(mHoldScreen);
|
mWmService.setHoldScreenLocked(mHoldScreen);
|
||||||
if (!mWmService.mDisplayFrozen) {
|
if (!mWmService.mDisplayFrozen) {
|
||||||
final int brightness = mScreenBrightness < 0 || mScreenBrightness > 1.0f
|
final float brightnessOverride = mScreenBrightnessOverride < PowerManager.BRIGHTNESS_MIN
|
||||||
? -1 : toBrightnessOverride(mScreenBrightness);
|
|| mScreenBrightnessOverride > PowerManager.BRIGHTNESS_MAX
|
||||||
|
? PowerManager.BRIGHTNESS_INVALID_FLOAT : mScreenBrightnessOverride;
|
||||||
|
int brightnessFloatAsIntBits = Float.floatToIntBits(brightnessOverride);
|
||||||
// Post these on a handler such that we don't call into power manager service while
|
// Post these on a handler such that we don't call into power manager service while
|
||||||
// holding the window manager lock to avoid lock contention with power manager lock.
|
// holding the window manager lock to avoid lock contention with power manager lock.
|
||||||
mHandler.obtainMessage(SET_SCREEN_BRIGHTNESS_OVERRIDE, brightness, 0).sendToTarget();
|
mHandler.obtainMessage(SET_SCREEN_BRIGHTNESS_OVERRIDE, brightnessFloatAsIntBits,
|
||||||
|
0).sendToTarget();
|
||||||
mHandler.obtainMessage(SET_USER_ACTIVITY_TIMEOUT, mUserActivityTimeout).sendToTarget();
|
mHandler.obtainMessage(SET_USER_ACTIVITY_TIMEOUT, mUserActivityTimeout).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1125,8 +1127,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
+ "has FLAG_KEEP_SCREEN_ON!!! called by%s",
|
+ "has FLAG_KEEP_SCREEN_ON!!! called by%s",
|
||||||
w, Debug.getCallers(10));
|
w, Debug.getCallers(10));
|
||||||
}
|
}
|
||||||
if (!syswin && w.mAttrs.screenBrightness >= 0 && mScreenBrightness < 0) {
|
if (!syswin && w.mAttrs.screenBrightness >= 0
|
||||||
mScreenBrightness = w.mAttrs.screenBrightness;
|
&& Float.isNaN(mScreenBrightnessOverride)) {
|
||||||
|
mScreenBrightnessOverride = w.mAttrs.screenBrightness;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int type = attrs.type;
|
final int type = attrs.type;
|
||||||
@@ -1190,10 +1193,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
return doRequest;
|
return doRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int toBrightnessOverride(float value) {
|
|
||||||
return (int)(value * PowerManager.BRIGHTNESS_ON);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final class MyHandler extends Handler {
|
private final class MyHandler extends Handler {
|
||||||
|
|
||||||
public MyHandler(Looper looper) {
|
public MyHandler(Looper looper) {
|
||||||
@@ -1205,7 +1204,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
switch (msg.what) {
|
switch (msg.what) {
|
||||||
case SET_SCREEN_BRIGHTNESS_OVERRIDE:
|
case SET_SCREEN_BRIGHTNESS_OVERRIDE:
|
||||||
mWmService.mPowerManagerInternal.setScreenBrightnessOverrideFromWindowManager(
|
mWmService.mPowerManagerInternal.setScreenBrightnessOverrideFromWindowManager(
|
||||||
msg.arg1);
|
Float.intBitsToFloat(msg.arg1));
|
||||||
break;
|
break;
|
||||||
case SET_USER_ACTIVITY_TIMEOUT:
|
case SET_USER_ACTIVITY_TIMEOUT:
|
||||||
mWmService.mPowerManagerInternal.
|
mWmService.mPowerManagerInternal.
|
||||||
|
|||||||
Reference in New Issue
Block a user