Merge "Add automatic brightness events to dumpsys" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ecaa57bbe4
@@ -63,6 +63,7 @@ import com.android.internal.display.BrightnessSynchronizer;
|
|||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.util.FrameworkStatsLog;
|
import com.android.internal.util.FrameworkStatsLog;
|
||||||
|
import com.android.internal.util.RingBuffer;
|
||||||
import com.android.server.LocalServices;
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.am.BatteryStatsService;
|
import com.android.server.am.BatteryStatsService;
|
||||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||||
@@ -156,6 +157,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
|
private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
|
||||||
private static final int REPORTED_TO_POLICY_SCREEN_TURNING_OFF = 3;
|
private static final int REPORTED_TO_POLICY_SCREEN_TURNING_OFF = 3;
|
||||||
|
|
||||||
|
private static final int RINGBUFFER_MAX = 100;
|
||||||
|
|
||||||
private final String TAG;
|
private final String TAG;
|
||||||
|
|
||||||
private final Object mLock = new Object();
|
private final Object mLock = new Object();
|
||||||
@@ -213,6 +216,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
|
|
||||||
private final float mScreenBrightnessDefault;
|
private final float mScreenBrightnessDefault;
|
||||||
|
|
||||||
|
// Previously logged screen brightness. Used for autobrightness event dumpsys.
|
||||||
|
private float mPreviousScreenBrightness = Float.NaN;
|
||||||
|
|
||||||
// The minimum allowed brightness while in VR.
|
// The minimum allowed brightness while in VR.
|
||||||
private final float mScreenBrightnessForVrRangeMinimum;
|
private final float mScreenBrightnessForVrRangeMinimum;
|
||||||
|
|
||||||
@@ -388,6 +394,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
|
|
||||||
private final Runnable mOnBrightnessChangeRunnable;
|
private final Runnable mOnBrightnessChangeRunnable;
|
||||||
|
|
||||||
|
// Used for keeping record in dumpsys for when and to which brightness auto adaptions were made.
|
||||||
|
private RingBuffer<AutobrightnessEvent> mAutobrightnessEventRingBuffer;
|
||||||
|
|
||||||
// A record of state for skipping brightness ramps.
|
// A record of state for skipping brightness ramps.
|
||||||
private int mSkipRampState = RAMP_STATE_SKIP_NONE;
|
private int mSkipRampState = RAMP_STATE_SKIP_NONE;
|
||||||
|
|
||||||
@@ -981,6 +990,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
mHbmController, mBrightnessThrottler, mIdleModeBrightnessMapper,
|
mHbmController, mBrightnessThrottler, mIdleModeBrightnessMapper,
|
||||||
mDisplayDeviceConfig.getAmbientHorizonShort(),
|
mDisplayDeviceConfig.getAmbientHorizonShort(),
|
||||||
mDisplayDeviceConfig.getAmbientHorizonLong());
|
mDisplayDeviceConfig.getAmbientHorizonLong());
|
||||||
|
|
||||||
|
mAutobrightnessEventRingBuffer =
|
||||||
|
new RingBuffer<>(AutobrightnessEvent.class, RINGBUFFER_MAX);
|
||||||
} else {
|
} else {
|
||||||
mUseSoftwareAutoBrightnessConfig = false;
|
mUseSoftwareAutoBrightnessConfig = false;
|
||||||
}
|
}
|
||||||
@@ -1555,6 +1567,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
Slog.v(TAG, "Brightness [" + brightnessState + "] manual adjustment.");
|
Slog.v(TAG, "Brightness [" + brightnessState + "] manual adjustment.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add any automatic changes to autobrightness ringbuffer for dumpsys.
|
||||||
|
if (mBrightnessReason.reason == BrightnessReason.REASON_AUTOMATIC
|
||||||
|
&& !BrightnessSynchronizer.floatEquals(
|
||||||
|
mPreviousScreenBrightness, brightnessState)) {
|
||||||
|
mPreviousScreenBrightness = brightnessState;
|
||||||
|
mAutobrightnessEventRingBuffer.append(new AutobrightnessEvent(
|
||||||
|
System.currentTimeMillis(), brightnessState));
|
||||||
|
}
|
||||||
|
|
||||||
// Update display white-balance.
|
// Update display white-balance.
|
||||||
if (mDisplayWhiteBalanceController != null) {
|
if (mDisplayWhiteBalanceController != null) {
|
||||||
if (state == Display.STATE_ON && mDisplayWhiteBalanceSettings.isEnabled()) {
|
if (state == Display.STATE_ON && mDisplayWhiteBalanceSettings.isEnabled()) {
|
||||||
@@ -2482,6 +2503,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
|
|
||||||
if (mAutomaticBrightnessController != null) {
|
if (mAutomaticBrightnessController != null) {
|
||||||
mAutomaticBrightnessController.dump(pw);
|
mAutomaticBrightnessController.dump(pw);
|
||||||
|
dumpAutobrightnessEvents(pw);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mHbmController != null) {
|
if (mHbmController != null) {
|
||||||
@@ -2538,6 +2560,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void dumpAutobrightnessEvents(PrintWriter pw) {
|
||||||
|
int size = mAutobrightnessEventRingBuffer.size();
|
||||||
|
if (size < 1) {
|
||||||
|
pw.println("No Automatic Brightness Adjustments");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pw.println("Automatic Brightness Adjustments Last " + size + " Events: ");
|
||||||
|
AutobrightnessEvent[] eventArray = mAutobrightnessEventRingBuffer.toArray();
|
||||||
|
for (int i = 0; i < mAutobrightnessEventRingBuffer.size(); i++) {
|
||||||
|
pw.println(" " + eventArray[i].toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static float clampAbsoluteBrightness(float value) {
|
private static float clampAbsoluteBrightness(float value) {
|
||||||
return MathUtils.constrain(value, PowerManager.BRIGHTNESS_MIN,
|
return MathUtils.constrain(value, PowerManager.BRIGHTNESS_MIN,
|
||||||
PowerManager.BRIGHTNESS_MAX);
|
PowerManager.BRIGHTNESS_MAX);
|
||||||
@@ -2610,6 +2646,21 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class AutobrightnessEvent {
|
||||||
|
final long mTime;
|
||||||
|
final float mBrightness;
|
||||||
|
|
||||||
|
AutobrightnessEvent(long time, float brightness) {
|
||||||
|
mTime = time;
|
||||||
|
mBrightness = brightness;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return TimeUtils.formatForLogging(mTime) + " - Brightness: " + mBrightness;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private final class DisplayControllerHandler extends Handler {
|
private final class DisplayControllerHandler extends Handler {
|
||||||
public DisplayControllerHandler(Looper looper) {
|
public DisplayControllerHandler(Looper looper) {
|
||||||
super(looper, null, true /*async*/);
|
super(looper, null, true /*async*/);
|
||||||
|
|||||||
Reference in New Issue
Block a user