Added to enable/disable log for DisplayModeDirector
Added to enable/disable log for DisplayModeDirector dynamically Bug: 176018998 Test: enable DMD logging with $adb shell cmd display dmd-logging-enable This should start logging the collected for DMD. You can filter it with : $adb logcat | grep 'DisplayModeDirector' Change-Id: I66478dda66d5d89193ef1838ab3afca94bf72313 Merged-In: I66478dda66d5d89193ef1838ab3afca94bf72313
This commit is contained in:
@@ -1484,6 +1484,14 @@ public final class DisplayManagerService extends SystemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setDisplayModeDirectorLoggingEnabled(boolean enabled) {
|
||||||
|
synchronized (mSyncRoot) {
|
||||||
|
if (mDisplayModeDirector != null) {
|
||||||
|
mDisplayModeDirector.setLoggingEnabled(enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setAmbientColorTemperatureOverride(float cct) {
|
void setAmbientColorTemperatureOverride(float cct) {
|
||||||
if (mDisplayPowerController != null) {
|
if (mDisplayPowerController != null) {
|
||||||
synchronized (mSyncRoot) {
|
synchronized (mSyncRoot) {
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
return setDisplayWhiteBalanceLoggingEnabled(true);
|
return setDisplayWhiteBalanceLoggingEnabled(true);
|
||||||
case "dwb-logging-disable":
|
case "dwb-logging-disable":
|
||||||
return setDisplayWhiteBalanceLoggingEnabled(false);
|
return setDisplayWhiteBalanceLoggingEnabled(false);
|
||||||
|
case "dmd-logging-enable":
|
||||||
|
return setDisplayModeDirectorLoggingEnabled(true);
|
||||||
|
case "dmd-logging-disable":
|
||||||
|
return setDisplayModeDirectorLoggingEnabled(false);
|
||||||
case "dwb-set-cct":
|
case "dwb-set-cct":
|
||||||
return setAmbientColorTemperatureOverride();
|
return setAmbientColorTemperatureOverride();
|
||||||
default:
|
default:
|
||||||
@@ -80,6 +84,10 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
pw.println(" Enable display white-balance logging.");
|
pw.println(" Enable display white-balance logging.");
|
||||||
pw.println(" dwb-logging-disable");
|
pw.println(" dwb-logging-disable");
|
||||||
pw.println(" Disable display white-balance logging.");
|
pw.println(" Disable display white-balance logging.");
|
||||||
|
pw.println(" dmd-logging-enable");
|
||||||
|
pw.println(" Enable display mode director logging.");
|
||||||
|
pw.println(" dmd-logging-disable");
|
||||||
|
pw.println(" Disable display mode director logging.");
|
||||||
pw.println(" dwb-set-cct CCT");
|
pw.println(" dwb-set-cct CCT");
|
||||||
pw.println(" Sets the ambient color temperature override to CCT (use -1 to disable).");
|
pw.println(" Sets the ambient color temperature override to CCT (use -1 to disable).");
|
||||||
pw.println();
|
pw.println();
|
||||||
@@ -132,6 +140,11 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int setDisplayModeDirectorLoggingEnabled(boolean enabled) {
|
||||||
|
mService.setDisplayModeDirectorLoggingEnabled(enabled);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
private int setAmbientColorTemperatureOverride() {
|
private int setAmbientColorTemperatureOverride() {
|
||||||
String cctText = getNextArg();
|
String cctText = getNextArg();
|
||||||
if (cctText == null) {
|
if (cctText == null) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ import java.util.Objects;
|
|||||||
*/
|
*/
|
||||||
public class DisplayModeDirector {
|
public class DisplayModeDirector {
|
||||||
private static final String TAG = "DisplayModeDirector";
|
private static final String TAG = "DisplayModeDirector";
|
||||||
private static final boolean DEBUG = false;
|
private boolean mLoggingEnabled;
|
||||||
|
|
||||||
private static final int MSG_REFRESH_RATE_RANGE_CHANGED = 1;
|
private static final int MSG_REFRESH_RATE_RANGE_CHANGED = 1;
|
||||||
private static final int MSG_LOW_BRIGHTNESS_THRESHOLDS_CHANGED = 2;
|
private static final int MSG_LOW_BRIGHTNESS_THRESHOLDS_CHANGED = 2;
|
||||||
@@ -147,6 +147,14 @@ public class DisplayModeDirector {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLoggingEnabled(boolean loggingEnabled) {
|
||||||
|
if (mLoggingEnabled == loggingEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mLoggingEnabled = loggingEnabled;
|
||||||
|
mBrightnessObserver.setLoggingEnabled(loggingEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private SparseArray<Vote> getVotesLocked(int displayId) {
|
private SparseArray<Vote> getVotesLocked(int displayId) {
|
||||||
SparseArray<Vote> displayVotes = mVotesByDisplay.get(displayId);
|
SparseArray<Vote> displayVotes = mVotesByDisplay.get(displayId);
|
||||||
@@ -248,7 +256,7 @@ public class DisplayModeDirector {
|
|||||||
|
|
||||||
availableModes = filterModes(modes, primarySummary);
|
availableModes = filterModes(modes, primarySummary);
|
||||||
if (availableModes.length > 0) {
|
if (availableModes.length > 0) {
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.w(TAG, "Found available modes=" + Arrays.toString(availableModes)
|
Slog.w(TAG, "Found available modes=" + Arrays.toString(availableModes)
|
||||||
+ " with lowest priority considered "
|
+ " with lowest priority considered "
|
||||||
+ Vote.priorityToString(lowestConsideredPriority)
|
+ Vote.priorityToString(lowestConsideredPriority)
|
||||||
@@ -261,7 +269,7 @@ public class DisplayModeDirector {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.w(TAG, "Couldn't find available modes with lowest priority set to "
|
Slog.w(TAG, "Couldn't find available modes with lowest priority set to "
|
||||||
+ Vote.priorityToString(lowestConsideredPriority)
|
+ Vote.priorityToString(lowestConsideredPriority)
|
||||||
+ " and with the following constraints: "
|
+ " and with the following constraints: "
|
||||||
@@ -283,7 +291,7 @@ public class DisplayModeDirector {
|
|||||||
Math.min(appRequestSummary.minRefreshRate, primarySummary.minRefreshRate);
|
Math.min(appRequestSummary.minRefreshRate, primarySummary.minRefreshRate);
|
||||||
appRequestSummary.maxRefreshRate =
|
appRequestSummary.maxRefreshRate =
|
||||||
Math.max(appRequestSummary.maxRefreshRate, primarySummary.maxRefreshRate);
|
Math.max(appRequestSummary.maxRefreshRate, primarySummary.maxRefreshRate);
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.i(TAG,
|
Slog.i(TAG,
|
||||||
String.format("App request range: [%.0f %.0f]",
|
String.format("App request range: [%.0f %.0f]",
|
||||||
appRequestSummary.minRefreshRate,
|
appRequestSummary.minRefreshRate,
|
||||||
@@ -310,7 +318,7 @@ public class DisplayModeDirector {
|
|||||||
for (Display.Mode mode : supportedModes) {
|
for (Display.Mode mode : supportedModes) {
|
||||||
if (mode.getPhysicalWidth() != summary.width
|
if (mode.getPhysicalWidth() != summary.width
|
||||||
|| mode.getPhysicalHeight() != summary.height) {
|
|| mode.getPhysicalHeight() != summary.height) {
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.w(TAG, "Discarding mode " + mode.getModeId() + ", wrong size"
|
Slog.w(TAG, "Discarding mode " + mode.getModeId() + ", wrong size"
|
||||||
+ ": desiredWidth=" + summary.width
|
+ ": desiredWidth=" + summary.width
|
||||||
+ ": desiredHeight=" + summary.height
|
+ ": desiredHeight=" + summary.height
|
||||||
@@ -325,7 +333,7 @@ public class DisplayModeDirector {
|
|||||||
// comparison.
|
// comparison.
|
||||||
if (refreshRate < (summary.minRefreshRate - FLOAT_TOLERANCE)
|
if (refreshRate < (summary.minRefreshRate - FLOAT_TOLERANCE)
|
||||||
|| refreshRate > (summary.maxRefreshRate + FLOAT_TOLERANCE)) {
|
|| refreshRate > (summary.maxRefreshRate + FLOAT_TOLERANCE)) {
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.w(TAG, "Discarding mode " + mode.getModeId()
|
Slog.w(TAG, "Discarding mode " + mode.getModeId()
|
||||||
+ ", outside refresh rate bounds"
|
+ ", outside refresh rate bounds"
|
||||||
+ ": minRefreshRate=" + summary.minRefreshRate
|
+ ": minRefreshRate=" + summary.minRefreshRate
|
||||||
@@ -425,7 +433,7 @@ public class DisplayModeDirector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateVoteLocked(int displayId, int priority, Vote vote) {
|
private void updateVoteLocked(int displayId, int priority, Vote vote) {
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.i(TAG, "updateVoteLocked(displayId=" + displayId
|
Slog.i(TAG, "updateVoteLocked(displayId=" + displayId
|
||||||
+ ", priority=" + Vote.priorityToString(priority)
|
+ ", priority=" + Vote.priorityToString(priority)
|
||||||
+ ", vote=" + vote + ")");
|
+ ", vote=" + vote + ")");
|
||||||
@@ -446,7 +454,7 @@ public class DisplayModeDirector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (votes.size() == 0) {
|
if (votes.size() == 0) {
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.i(TAG, "No votes left for display " + displayId + ", removing.");
|
Slog.i(TAG, "No votes left for display " + displayId + ", removing.");
|
||||||
}
|
}
|
||||||
mVotesByDisplay.remove(displayId);
|
mVotesByDisplay.remove(displayId);
|
||||||
@@ -1148,6 +1156,7 @@ public class DisplayModeDirector {
|
|||||||
private boolean mShouldObserveAmbientLowChange;
|
private boolean mShouldObserveAmbientLowChange;
|
||||||
private boolean mShouldObserveDisplayHighChange;
|
private boolean mShouldObserveDisplayHighChange;
|
||||||
private boolean mShouldObserveAmbientHighChange;
|
private boolean mShouldObserveAmbientHighChange;
|
||||||
|
private boolean mLoggingEnabled;
|
||||||
|
|
||||||
private SensorManager mSensorManager;
|
private SensorManager mSensorManager;
|
||||||
private Sensor mLightSensor;
|
private Sensor mLightSensor;
|
||||||
@@ -1276,6 +1285,14 @@ public class DisplayModeDirector {
|
|||||||
mDeviceConfigDisplaySettings.startListening();
|
mDeviceConfigDisplaySettings.startListening();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLoggingEnabled(boolean loggingEnabled) {
|
||||||
|
if (mLoggingEnabled == loggingEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mLoggingEnabled = loggingEnabled;
|
||||||
|
mLightSensorListener.setLoggingEnabled(loggingEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
public void onRefreshRateSettingChangedLocked(float min, float max) {
|
public void onRefreshRateSettingChangedLocked(float min, float max) {
|
||||||
boolean changeable = (max - min > 1f && max > 60f);
|
boolean changeable = (max - min > 1f && max > 60f);
|
||||||
if (mRefreshRateChangeable != changeable) {
|
if (mRefreshRateChangeable != changeable) {
|
||||||
@@ -1552,7 +1569,7 @@ public class DisplayModeDirector {
|
|||||||
vote = Vote.forRefreshRates(mRefreshRateInHighZone, mRefreshRateInHighZone);
|
vote = Vote.forRefreshRates(mRefreshRateInHighZone, mRefreshRateInHighZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.d(TAG, "Display brightness " + mBrightness + ", ambient lux " + mAmbientLux
|
Slog.d(TAG, "Display brightness " + mBrightness + ", ambient lux " + mAmbientLux
|
||||||
+ ", Vote " + vote);
|
+ ", Vote " + vote);
|
||||||
}
|
}
|
||||||
@@ -1581,6 +1598,11 @@ public class DisplayModeDirector {
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void setDefaultDisplayState(int state) {
|
public void setDefaultDisplayState(int state) {
|
||||||
|
if (mLoggingEnabled) {
|
||||||
|
Slog.d(TAG, "setDefaultDisplayState: mDefaultDisplayState = "
|
||||||
|
+ mDefaultDisplayState + ", state = " + state);
|
||||||
|
}
|
||||||
|
|
||||||
if (mDefaultDisplayState != state) {
|
if (mDefaultDisplayState != state) {
|
||||||
mDefaultDisplayState = state;
|
mDefaultDisplayState = state;
|
||||||
updateSensorStatus();
|
updateSensorStatus();
|
||||||
@@ -1592,13 +1614,28 @@ public class DisplayModeDirector {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mLoggingEnabled) {
|
||||||
|
Slog.d(TAG, "updateSensorStatus: mShouldObserveAmbientLowChange = "
|
||||||
|
+ mShouldObserveAmbientLowChange + ", mShouldObserveAmbientHighChange = "
|
||||||
|
+ mShouldObserveAmbientHighChange);
|
||||||
|
Slog.d(TAG, "updateSensorStatus: mLowPowerModeEnabled = "
|
||||||
|
+ mLowPowerModeEnabled + ", mRefreshRateChangeable = "
|
||||||
|
+ mRefreshRateChangeable);
|
||||||
|
}
|
||||||
|
|
||||||
if ((mShouldObserveAmbientLowChange || mShouldObserveAmbientHighChange)
|
if ((mShouldObserveAmbientLowChange || mShouldObserveAmbientHighChange)
|
||||||
&& isDeviceActive() && !mLowPowerModeEnabled && mRefreshRateChangeable) {
|
&& isDeviceActive() && !mLowPowerModeEnabled && mRefreshRateChangeable) {
|
||||||
mSensorManager.registerListener(mLightSensorListener,
|
mSensorManager.registerListener(mLightSensorListener,
|
||||||
mLightSensor, LIGHT_SENSOR_RATE_MS * 1000, mHandler);
|
mLightSensor, LIGHT_SENSOR_RATE_MS * 1000, mHandler);
|
||||||
|
if (mLoggingEnabled) {
|
||||||
|
Slog.d(TAG, "updateSensorStatus: registerListener");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
mLightSensorListener.removeCallbacks();
|
mLightSensorListener.removeCallbacks();
|
||||||
mSensorManager.unregisterListener(mLightSensorListener);
|
mSensorManager.unregisterListener(mLightSensorListener);
|
||||||
|
if (mLoggingEnabled) {
|
||||||
|
Slog.d(TAG, "updateSensorStatus: unregisterListener");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1612,16 +1649,25 @@ public class DisplayModeDirector {
|
|||||||
final private static int INJECT_EVENTS_INTERVAL_MS = LIGHT_SENSOR_RATE_MS;
|
final private static int INJECT_EVENTS_INTERVAL_MS = LIGHT_SENSOR_RATE_MS;
|
||||||
private float mLastSensorData;
|
private float mLastSensorData;
|
||||||
private long mTimestamp;
|
private long mTimestamp;
|
||||||
|
private boolean mLoggingEnabled;
|
||||||
|
|
||||||
public void dumpLocked(PrintWriter pw) {
|
public void dumpLocked(PrintWriter pw) {
|
||||||
pw.println(" mLastSensorData: " + mLastSensorData);
|
pw.println(" mLastSensorData: " + mLastSensorData);
|
||||||
pw.println(" mTimestamp: " + formatTimestamp(mTimestamp));
|
pw.println(" mTimestamp: " + formatTimestamp(mTimestamp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setLoggingEnabled(boolean loggingEnabled) {
|
||||||
|
if (mLoggingEnabled == loggingEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mLoggingEnabled = loggingEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
mLastSensorData = event.values[0];
|
mLastSensorData = event.values[0];
|
||||||
if (DEBUG) {
|
if (mLoggingEnabled) {
|
||||||
Slog.d(TAG, "On sensor changed: " + mLastSensorData);
|
Slog.d(TAG, "On sensor changed: " + mLastSensorData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user