Merge "Loading lower and higher blocking zone refresh rates" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2f3a6b6a2b
@@ -402,6 +402,8 @@ public class DisplayDeviceConfig {
|
|||||||
private static final String STABLE_ID_SUFFIX_FORMAT = "id_%d";
|
private static final String STABLE_ID_SUFFIX_FORMAT = "id_%d";
|
||||||
private static final String NO_SUFFIX_FORMAT = "%d";
|
private static final String NO_SUFFIX_FORMAT = "%d";
|
||||||
private static final long STABLE_FLAG = 1L << 62;
|
private static final long STABLE_FLAG = 1L << 62;
|
||||||
|
private static final int DEFAULT_PEAK_REFRESH_RATE = 0;
|
||||||
|
private static final int DEFAULT_REFRESH_RATE = 60;
|
||||||
private static final int DEFAULT_LOW_REFRESH_RATE = 60;
|
private static final int DEFAULT_LOW_REFRESH_RATE = 60;
|
||||||
private static final int DEFAULT_HIGH_REFRESH_RATE = 0;
|
private static final int DEFAULT_HIGH_REFRESH_RATE = 0;
|
||||||
private static final int[] DEFAULT_BRIGHTNESS_THRESHOLDS = new int[]{};
|
private static final int[] DEFAULT_BRIGHTNESS_THRESHOLDS = new int[]{};
|
||||||
@@ -570,17 +572,29 @@ public class DisplayDeviceConfig {
|
|||||||
* using higher refresh rates, even if display modes with higher refresh rates are available
|
* using higher refresh rates, even if display modes with higher refresh rates are available
|
||||||
* from hardware composer. Only has an effect if the value is non-zero.
|
* from hardware composer. Only has an effect if the value is non-zero.
|
||||||
*/
|
*/
|
||||||
private int mDefaultHighRefreshRate = DEFAULT_HIGH_REFRESH_RATE;
|
private int mDefaultPeakRefreshRate = DEFAULT_PEAK_REFRESH_RATE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default refresh rate for a given device. This value sets the higher default
|
* The default refresh rate for a given device. This value sets the higher default
|
||||||
* refresh rate. If the hardware composer on the device supports display modes with
|
* refresh rate. If the hardware composer on the device supports display modes with
|
||||||
* a higher refresh rate than the default value specified here, the framework may use those
|
* a higher refresh rate than the default value specified here, the framework may use those
|
||||||
* higher refresh rate modes if an app chooses one by setting preferredDisplayModeId or calling
|
* higher refresh rate modes if an app chooses one by setting preferredDisplayModeId or calling
|
||||||
* setFrameRate(). We have historically allowed fallback to mDefaultHighRefreshRate if
|
* setFrameRate(). We have historically allowed fallback to mDefaultPeakRefreshRate if
|
||||||
* mDefaultLowRefreshRate is set to 0, but this is not supported anymore.
|
* mDefaultRefreshRate is set to 0, but this is not supported anymore.
|
||||||
*/
|
*/
|
||||||
private int mDefaultLowRefreshRate = DEFAULT_LOW_REFRESH_RATE;
|
private int mDefaultRefreshRate = DEFAULT_REFRESH_RATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default refresh rate in the high zone defined by brightness and ambient thresholds.
|
||||||
|
* If non-positive, then the refresh rate is unchanged even if thresholds are configured.
|
||||||
|
*/
|
||||||
|
private int mDefaultHighBlockingZoneRefreshRate = DEFAULT_HIGH_REFRESH_RATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default refresh rate in the zone defined by brightness and ambient thresholds.
|
||||||
|
* If non-positive, then the refresh rate is unchanged even if thresholds are configured.
|
||||||
|
*/
|
||||||
|
private int mDefaultLowBlockingZoneRefreshRate = DEFAULT_LOW_REFRESH_RATE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The display uses different gamma curves for different refresh rates. It's hard for panel
|
* The display uses different gamma curves for different refresh rates. It's hard for panel
|
||||||
@@ -1296,15 +1310,29 @@ public class DisplayDeviceConfig {
|
|||||||
/**
|
/**
|
||||||
* @return Default peak refresh rate of the associated display
|
* @return Default peak refresh rate of the associated display
|
||||||
*/
|
*/
|
||||||
public int getDefaultHighRefreshRate() {
|
public int getDefaultPeakRefreshRate() {
|
||||||
return mDefaultHighRefreshRate;
|
return mDefaultPeakRefreshRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Default refresh rate of the associated display
|
* @return Default refresh rate of the associated display
|
||||||
*/
|
*/
|
||||||
public int getDefaultLowRefreshRate() {
|
public int getDefaultRefreshRate() {
|
||||||
return mDefaultLowRefreshRate;
|
return mDefaultRefreshRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Default refresh rate in the higher blocking zone of the associated display
|
||||||
|
*/
|
||||||
|
public int getDefaultHighBlockingZoneRefreshRate() {
|
||||||
|
return mDefaultHighBlockingZoneRefreshRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Default refresh rate in the lower blocking zone of the associated display
|
||||||
|
*/
|
||||||
|
public int getDefaultLowBlockingZoneRefreshRate() {
|
||||||
|
return mDefaultLowBlockingZoneRefreshRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1442,8 +1470,10 @@ public class DisplayDeviceConfig {
|
|||||||
+ ", mDdcAutoBrightnessAvailable= " + mDdcAutoBrightnessAvailable
|
+ ", mDdcAutoBrightnessAvailable= " + mDdcAutoBrightnessAvailable
|
||||||
+ ", mAutoBrightnessAvailable= " + mAutoBrightnessAvailable
|
+ ", mAutoBrightnessAvailable= " + mAutoBrightnessAvailable
|
||||||
+ "\n"
|
+ "\n"
|
||||||
+ ", mDefaultRefreshRate= " + mDefaultLowRefreshRate
|
+ ", mDefaultLowBlockingZoneRefreshRate= " + mDefaultLowBlockingZoneRefreshRate
|
||||||
+ ", mDefaultPeakRefreshRate= " + mDefaultHighRefreshRate
|
+ ", mDefaultHighBlockingZoneRefreshRate= " + mDefaultHighBlockingZoneRefreshRate
|
||||||
|
+ ", mDefaultPeakRefreshRate= " + mDefaultPeakRefreshRate
|
||||||
|
+ ", mDefaultRefreshRate= " + mDefaultRefreshRate
|
||||||
+ ", mLowDisplayBrightnessThresholds= "
|
+ ", mLowDisplayBrightnessThresholds= "
|
||||||
+ Arrays.toString(mLowDisplayBrightnessThresholds)
|
+ Arrays.toString(mLowDisplayBrightnessThresholds)
|
||||||
+ ", mLowAmbientBrightnessThresholds= "
|
+ ", mLowAmbientBrightnessThresholds= "
|
||||||
@@ -1757,10 +1787,31 @@ public class DisplayDeviceConfig {
|
|||||||
BlockingZoneConfig higherBlockingZoneConfig =
|
BlockingZoneConfig higherBlockingZoneConfig =
|
||||||
(refreshRateConfigs == null) ? null
|
(refreshRateConfigs == null) ? null
|
||||||
: refreshRateConfigs.getHigherBlockingZoneConfigs();
|
: refreshRateConfigs.getHigherBlockingZoneConfigs();
|
||||||
|
loadPeakDefaultRefreshRate(refreshRateConfigs);
|
||||||
|
loadDefaultRefreshRate(refreshRateConfigs);
|
||||||
loadLowerRefreshRateBlockingZones(lowerBlockingZoneConfig);
|
loadLowerRefreshRateBlockingZones(lowerBlockingZoneConfig);
|
||||||
loadHigherRefreshRateBlockingZones(higherBlockingZoneConfig);
|
loadHigherRefreshRateBlockingZones(higherBlockingZoneConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadPeakDefaultRefreshRate(RefreshRateConfigs refreshRateConfigs) {
|
||||||
|
if (refreshRateConfigs == null || refreshRateConfigs.getDefaultPeakRefreshRate() == null) {
|
||||||
|
mDefaultPeakRefreshRate = mContext.getResources().getInteger(
|
||||||
|
R.integer.config_defaultPeakRefreshRate);
|
||||||
|
} else {
|
||||||
|
mDefaultPeakRefreshRate =
|
||||||
|
refreshRateConfigs.getDefaultPeakRefreshRate().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadDefaultRefreshRate(RefreshRateConfigs refreshRateConfigs) {
|
||||||
|
if (refreshRateConfigs == null || refreshRateConfigs.getDefaultRefreshRate() == null) {
|
||||||
|
mDefaultRefreshRate = mContext.getResources().getInteger(
|
||||||
|
R.integer.config_defaultRefreshRate);
|
||||||
|
} else {
|
||||||
|
mDefaultRefreshRate =
|
||||||
|
refreshRateConfigs.getDefaultRefreshRate().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the refresh rate configurations pertaining to the upper blocking zones.
|
* Loads the refresh rate configurations pertaining to the upper blocking zones.
|
||||||
@@ -1785,10 +1836,10 @@ public class DisplayDeviceConfig {
|
|||||||
private void loadHigherBlockingZoneDefaultRefreshRate(
|
private void loadHigherBlockingZoneDefaultRefreshRate(
|
||||||
BlockingZoneConfig upperBlockingZoneConfig) {
|
BlockingZoneConfig upperBlockingZoneConfig) {
|
||||||
if (upperBlockingZoneConfig == null) {
|
if (upperBlockingZoneConfig == null) {
|
||||||
mDefaultHighRefreshRate = mContext.getResources().getInteger(
|
mDefaultHighBlockingZoneRefreshRate = mContext.getResources().getInteger(
|
||||||
com.android.internal.R.integer.config_defaultPeakRefreshRate);
|
com.android.internal.R.integer.config_fixedRefreshRateInHighZone);
|
||||||
} else {
|
} else {
|
||||||
mDefaultHighRefreshRate =
|
mDefaultHighBlockingZoneRefreshRate =
|
||||||
upperBlockingZoneConfig.getDefaultRefreshRate().intValue();
|
upperBlockingZoneConfig.getDefaultRefreshRate().intValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1800,10 +1851,10 @@ public class DisplayDeviceConfig {
|
|||||||
private void loadLowerBlockingZoneDefaultRefreshRate(
|
private void loadLowerBlockingZoneDefaultRefreshRate(
|
||||||
BlockingZoneConfig lowerBlockingZoneConfig) {
|
BlockingZoneConfig lowerBlockingZoneConfig) {
|
||||||
if (lowerBlockingZoneConfig == null) {
|
if (lowerBlockingZoneConfig == null) {
|
||||||
mDefaultLowRefreshRate = mContext.getResources().getInteger(
|
mDefaultLowBlockingZoneRefreshRate = mContext.getResources().getInteger(
|
||||||
com.android.internal.R.integer.config_defaultRefreshRate);
|
com.android.internal.R.integer.config_defaultRefreshRateInZone);
|
||||||
} else {
|
} else {
|
||||||
mDefaultLowRefreshRate =
|
mDefaultLowBlockingZoneRefreshRate =
|
||||||
lowerBlockingZoneConfig.getDefaultRefreshRate().intValue();
|
lowerBlockingZoneConfig.getDefaultRefreshRate().intValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1169,7 +1169,7 @@ public class DisplayModeDirector {
|
|||||||
mDefaultRefreshRate =
|
mDefaultRefreshRate =
|
||||||
(displayDeviceConfig == null) ? (float) mContext.getResources().getInteger(
|
(displayDeviceConfig == null) ? (float) mContext.getResources().getInteger(
|
||||||
R.integer.config_defaultRefreshRate)
|
R.integer.config_defaultRefreshRate)
|
||||||
: (float) displayDeviceConfig.getDefaultLowRefreshRate();
|
: (float) displayDeviceConfig.getDefaultRefreshRate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void observe() {
|
public void observe() {
|
||||||
@@ -1256,7 +1256,7 @@ public class DisplayModeDirector {
|
|||||||
defaultPeakRefreshRate =
|
defaultPeakRefreshRate =
|
||||||
(displayDeviceConfig == null) ? (float) mContext.getResources().getInteger(
|
(displayDeviceConfig == null) ? (float) mContext.getResources().getInteger(
|
||||||
R.integer.config_defaultPeakRefreshRate)
|
R.integer.config_defaultPeakRefreshRate)
|
||||||
: (float) displayDeviceConfig.getDefaultHighRefreshRate();
|
: (float) displayDeviceConfig.getDefaultPeakRefreshRate();
|
||||||
}
|
}
|
||||||
mDefaultPeakRefreshRate = defaultPeakRefreshRate;
|
mDefaultPeakRefreshRate = defaultPeakRefreshRate;
|
||||||
}
|
}
|
||||||
@@ -1612,8 +1612,26 @@ public class DisplayModeDirector {
|
|||||||
return mHighAmbientBrightnessThresholds;
|
return mHighAmbientBrightnessThresholds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the refresh rate to lock to when in a high brightness zone
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
int getRefreshRateInHighZone() {
|
||||||
|
return mRefreshRateInHighZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the refresh rate to lock to when in a low brightness zone
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
int getRefreshRateInLowZone() {
|
||||||
|
return mRefreshRateInLowZone;
|
||||||
|
}
|
||||||
|
|
||||||
private void loadLowBrightnessThresholds(DisplayDeviceConfig displayDeviceConfig,
|
private void loadLowBrightnessThresholds(DisplayDeviceConfig displayDeviceConfig,
|
||||||
boolean attemptLoadingFromDeviceConfig) {
|
boolean attemptLoadingFromDeviceConfig) {
|
||||||
|
loadRefreshRateInHighZone(displayDeviceConfig, attemptLoadingFromDeviceConfig);
|
||||||
|
loadRefreshRateInLowZone(displayDeviceConfig, attemptLoadingFromDeviceConfig);
|
||||||
mLowDisplayBrightnessThresholds = loadBrightnessThresholds(
|
mLowDisplayBrightnessThresholds = loadBrightnessThresholds(
|
||||||
() -> mDeviceConfigDisplaySettings.getLowDisplayBrightnessThresholds(),
|
() -> mDeviceConfigDisplaySettings.getLowDisplayBrightnessThresholds(),
|
||||||
() -> displayDeviceConfig.getLowDisplayBrightnessThresholds(),
|
() -> displayDeviceConfig.getLowDisplayBrightnessThresholds(),
|
||||||
@@ -1634,6 +1652,44 @@ public class DisplayModeDirector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadRefreshRateInLowZone(DisplayDeviceConfig displayDeviceConfig,
|
||||||
|
boolean attemptLoadingFromDeviceConfig) {
|
||||||
|
int refreshRateInLowZone =
|
||||||
|
(displayDeviceConfig == null) ? mContext.getResources().getInteger(
|
||||||
|
R.integer.config_defaultRefreshRateInZone)
|
||||||
|
: displayDeviceConfig.getDefaultLowBlockingZoneRefreshRate();
|
||||||
|
if (attemptLoadingFromDeviceConfig) {
|
||||||
|
try {
|
||||||
|
refreshRateInLowZone = mDeviceConfig.getInt(
|
||||||
|
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
||||||
|
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_LOW_ZONE,
|
||||||
|
refreshRateInLowZone);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mRefreshRateInLowZone = refreshRateInLowZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadRefreshRateInHighZone(DisplayDeviceConfig displayDeviceConfig,
|
||||||
|
boolean attemptLoadingFromDeviceConfig) {
|
||||||
|
int refreshRateInHighZone =
|
||||||
|
(displayDeviceConfig == null) ? mContext.getResources().getInteger(
|
||||||
|
R.integer.config_fixedRefreshRateInHighZone) : displayDeviceConfig
|
||||||
|
.getDefaultHighBlockingZoneRefreshRate();
|
||||||
|
if (attemptLoadingFromDeviceConfig) {
|
||||||
|
try {
|
||||||
|
refreshRateInHighZone = mDeviceConfig.getInt(
|
||||||
|
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
||||||
|
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_HIGH_ZONE,
|
||||||
|
refreshRateInHighZone);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mRefreshRateInHighZone = refreshRateInHighZone;
|
||||||
|
}
|
||||||
|
|
||||||
private void loadHighBrightnessThresholds(DisplayDeviceConfig displayDeviceConfig,
|
private void loadHighBrightnessThresholds(DisplayDeviceConfig displayDeviceConfig,
|
||||||
boolean attemptLoadingFromDeviceConfig) {
|
boolean attemptLoadingFromDeviceConfig) {
|
||||||
mHighDisplayBrightnessThresholds = loadBrightnessThresholds(
|
mHighDisplayBrightnessThresholds = loadBrightnessThresholds(
|
||||||
@@ -1686,14 +1742,6 @@ public class DisplayModeDirector {
|
|||||||
return brightnessThresholds;
|
return brightnessThresholds;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the refresh to lock to when in a low brightness zone
|
|
||||||
*/
|
|
||||||
@VisibleForTesting
|
|
||||||
int getRefreshRateInLowZone() {
|
|
||||||
return mRefreshRateInLowZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the display brightness thresholds for the low brightness zones
|
* @return the display brightness thresholds for the low brightness zones
|
||||||
*/
|
*/
|
||||||
@@ -1739,8 +1787,17 @@ public class DisplayModeDirector {
|
|||||||
mHighAmbientBrightnessThresholds = highAmbientBrightnessThresholds;
|
mHighAmbientBrightnessThresholds = highAmbientBrightnessThresholds;
|
||||||
}
|
}
|
||||||
|
|
||||||
mRefreshRateInLowZone = mDeviceConfigDisplaySettings.getRefreshRateInLowZone();
|
final int refreshRateInLowZone = mDeviceConfigDisplaySettings
|
||||||
mRefreshRateInHighZone = mDeviceConfigDisplaySettings.getRefreshRateInHighZone();
|
.getRefreshRateInLowZone();
|
||||||
|
if (refreshRateInLowZone != -1) {
|
||||||
|
mRefreshRateInLowZone = refreshRateInLowZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int refreshRateInHighZone = mDeviceConfigDisplaySettings
|
||||||
|
.getRefreshRateInHighZone();
|
||||||
|
if (refreshRateInHighZone != -1) {
|
||||||
|
mRefreshRateInHighZone = refreshRateInHighZone;
|
||||||
|
}
|
||||||
|
|
||||||
restartObserver();
|
restartObserver();
|
||||||
mDeviceConfigDisplaySettings.startListening();
|
mDeviceConfigDisplaySettings.startListening();
|
||||||
@@ -1794,6 +1851,10 @@ public class DisplayModeDirector {
|
|||||||
restartObserver();
|
restartObserver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to reload the lower blocking zone refresh rate in case of changes in the
|
||||||
|
* DeviceConfig properties.
|
||||||
|
*/
|
||||||
public void onDeviceConfigRefreshRateInLowZoneChanged(int refreshRate) {
|
public void onDeviceConfigRefreshRateInLowZoneChanged(int refreshRate) {
|
||||||
if (refreshRate != mRefreshRateInLowZone) {
|
if (refreshRate != mRefreshRateInLowZone) {
|
||||||
mRefreshRateInLowZone = refreshRate;
|
mRefreshRateInLowZone = refreshRate;
|
||||||
@@ -1817,6 +1878,10 @@ public class DisplayModeDirector {
|
|||||||
restartObserver();
|
restartObserver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to reload the higher blocking zone refresh rate in case of changes in the
|
||||||
|
* DeviceConfig properties.
|
||||||
|
*/
|
||||||
public void onDeviceConfigRefreshRateInHighZoneChanged(int refreshRate) {
|
public void onDeviceConfigRefreshRateInHighZoneChanged(int refreshRate) {
|
||||||
if (refreshRate != mRefreshRateInHighZone) {
|
if (refreshRate != mRefreshRateInHighZone) {
|
||||||
mRefreshRateInHighZone = refreshRate;
|
mRefreshRateInHighZone = refreshRate;
|
||||||
@@ -2664,15 +2729,10 @@ public class DisplayModeDirector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getRefreshRateInLowZone() {
|
public int getRefreshRateInLowZone() {
|
||||||
int defaultRefreshRateInZone = mContext.getResources().getInteger(
|
return mDeviceConfig.getInt(
|
||||||
R.integer.config_defaultRefreshRateInZone);
|
|
||||||
|
|
||||||
int refreshRate = mDeviceConfig.getInt(
|
|
||||||
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
||||||
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_LOW_ZONE,
|
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_LOW_ZONE, -1);
|
||||||
defaultRefreshRateInZone);
|
|
||||||
|
|
||||||
return refreshRate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2694,15 +2754,10 @@ public class DisplayModeDirector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getRefreshRateInHighZone() {
|
public int getRefreshRateInHighZone() {
|
||||||
int defaultRefreshRateInZone = mContext.getResources().getInteger(
|
return mDeviceConfig.getInt(
|
||||||
R.integer.config_fixedRefreshRateInHighZone);
|
|
||||||
|
|
||||||
int refreshRate = mDeviceConfig.getInt(
|
|
||||||
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
|
||||||
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_HIGH_ZONE,
|
DisplayManager.DeviceConfig.KEY_REFRESH_RATE_IN_HIGH_ZONE,
|
||||||
defaultRefreshRateInZone);
|
-1);
|
||||||
|
|
||||||
return refreshRate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getRefreshRateInHbmSunlight() {
|
public int getRefreshRateInHbmSunlight() {
|
||||||
@@ -2750,23 +2805,29 @@ public class DisplayModeDirector {
|
|||||||
|
|
||||||
int[] lowDisplayBrightnessThresholds = getLowDisplayBrightnessThresholds();
|
int[] lowDisplayBrightnessThresholds = getLowDisplayBrightnessThresholds();
|
||||||
int[] lowAmbientBrightnessThresholds = getLowAmbientBrightnessThresholds();
|
int[] lowAmbientBrightnessThresholds = getLowAmbientBrightnessThresholds();
|
||||||
int refreshRateInLowZone = getRefreshRateInLowZone();
|
final int refreshRateInLowZone = getRefreshRateInLowZone();
|
||||||
|
|
||||||
mHandler.obtainMessage(MSG_LOW_BRIGHTNESS_THRESHOLDS_CHANGED,
|
mHandler.obtainMessage(MSG_LOW_BRIGHTNESS_THRESHOLDS_CHANGED,
|
||||||
new Pair<>(lowDisplayBrightnessThresholds, lowAmbientBrightnessThresholds))
|
new Pair<>(lowDisplayBrightnessThresholds, lowAmbientBrightnessThresholds))
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_LOW_ZONE_CHANGED, refreshRateInLowZone, 0)
|
|
||||||
|
if (refreshRateInLowZone != -1) {
|
||||||
|
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_LOW_ZONE_CHANGED, refreshRateInLowZone)
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
|
}
|
||||||
|
|
||||||
int[] highDisplayBrightnessThresholds = getHighDisplayBrightnessThresholds();
|
int[] highDisplayBrightnessThresholds = getHighDisplayBrightnessThresholds();
|
||||||
int[] highAmbientBrightnessThresholds = getHighAmbientBrightnessThresholds();
|
int[] highAmbientBrightnessThresholds = getHighAmbientBrightnessThresholds();
|
||||||
int refreshRateInHighZone = getRefreshRateInHighZone();
|
final int refreshRateInHighZone = getRefreshRateInHighZone();
|
||||||
|
|
||||||
mHandler.obtainMessage(MSG_HIGH_BRIGHTNESS_THRESHOLDS_CHANGED,
|
mHandler.obtainMessage(MSG_HIGH_BRIGHTNESS_THRESHOLDS_CHANGED,
|
||||||
new Pair<>(highDisplayBrightnessThresholds, highAmbientBrightnessThresholds))
|
new Pair<>(highDisplayBrightnessThresholds, highAmbientBrightnessThresholds))
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_HIGH_ZONE_CHANGED, refreshRateInHighZone, 0)
|
|
||||||
|
if (refreshRateInHighZone != -1) {
|
||||||
|
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_HIGH_ZONE_CHANGED, refreshRateInHighZone)
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
|
}
|
||||||
|
|
||||||
final int refreshRateInHbmSunlight = getRefreshRateInHbmSunlight();
|
final int refreshRateInHbmSunlight = getRefreshRateInHbmSunlight();
|
||||||
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_HBM_SUNLIGHT_CHANGED,
|
mHandler.obtainMessage(MSG_REFRESH_RATE_IN_HBM_SUNLIGHT_CHANGED,
|
||||||
|
|||||||
@@ -464,6 +464,14 @@
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name="refreshRateConfigs">
|
<xs:complexType name="refreshRateConfigs">
|
||||||
|
<xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger"
|
||||||
|
minOccurs="0" maxOccurs="1">
|
||||||
|
<xs:annotation name="final"/>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="defaultPeakRefreshRate" type="xs:nonNegativeInteger"
|
||||||
|
minOccurs="0" maxOccurs="1">
|
||||||
|
<xs:annotation name="final"/>
|
||||||
|
</xs:element>
|
||||||
<xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig"
|
<xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig"
|
||||||
minOccurs="0" maxOccurs="1">
|
minOccurs="0" maxOccurs="1">
|
||||||
<xs:annotation name="final"/>
|
<xs:annotation name="final"/>
|
||||||
|
|||||||
@@ -186,8 +186,12 @@ package com.android.server.display.config {
|
|||||||
|
|
||||||
public class RefreshRateConfigs {
|
public class RefreshRateConfigs {
|
||||||
ctor public RefreshRateConfigs();
|
ctor public RefreshRateConfigs();
|
||||||
|
method public final java.math.BigInteger getDefaultPeakRefreshRate();
|
||||||
|
method public final java.math.BigInteger getDefaultRefreshRate();
|
||||||
method public final com.android.server.display.config.BlockingZoneConfig getHigherBlockingZoneConfigs();
|
method public final com.android.server.display.config.BlockingZoneConfig getHigherBlockingZoneConfigs();
|
||||||
method public final com.android.server.display.config.BlockingZoneConfig getLowerBlockingZoneConfigs();
|
method public final com.android.server.display.config.BlockingZoneConfig getLowerBlockingZoneConfigs();
|
||||||
|
method public final void setDefaultPeakRefreshRate(java.math.BigInteger);
|
||||||
|
method public final void setDefaultRefreshRate(java.math.BigInteger);
|
||||||
method public final void setHigherBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig);
|
method public final void setHigherBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig);
|
||||||
method public final void setLowerBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig);
|
method public final void setLowerBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ import java.nio.file.Path;
|
|||||||
public final class DisplayDeviceConfigTest {
|
public final class DisplayDeviceConfigTest {
|
||||||
private static final int DEFAULT_PEAK_REFRESH_RATE = 75;
|
private static final int DEFAULT_PEAK_REFRESH_RATE = 75;
|
||||||
private static final int DEFAULT_REFRESH_RATE = 120;
|
private static final int DEFAULT_REFRESH_RATE = 120;
|
||||||
|
private static final int DEFAULT_HIGH_BLOCKING_ZONE_REFRESH_RATE = 55;
|
||||||
|
private static final int DEFAULT_LOW_BLOCKING_ZONE_REFRESH_RATE = 95;
|
||||||
private static final int[] LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{10, 30};
|
private static final int[] LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{10, 30};
|
||||||
private static final int[] LOW_AMBIENT_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{1, 21};
|
private static final int[] LOW_AMBIENT_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{1, 21};
|
||||||
private static final int[] HIGH_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{160};
|
private static final int[] HIGH_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE = new int[]{160};
|
||||||
@@ -150,8 +152,10 @@ public final class DisplayDeviceConfigTest {
|
|||||||
|
|
||||||
assertEquals("ProximitySensor123", mDisplayDeviceConfig.getProximitySensor().name);
|
assertEquals("ProximitySensor123", mDisplayDeviceConfig.getProximitySensor().name);
|
||||||
assertEquals("prox_type_1", mDisplayDeviceConfig.getProximitySensor().type);
|
assertEquals("prox_type_1", mDisplayDeviceConfig.getProximitySensor().type);
|
||||||
assertEquals(75, mDisplayDeviceConfig.getDefaultLowRefreshRate());
|
assertEquals(75, mDisplayDeviceConfig.getDefaultLowBlockingZoneRefreshRate());
|
||||||
assertEquals(90, mDisplayDeviceConfig.getDefaultHighRefreshRate());
|
assertEquals(90, mDisplayDeviceConfig.getDefaultHighBlockingZoneRefreshRate());
|
||||||
|
assertEquals(85, mDisplayDeviceConfig.getDefaultPeakRefreshRate());
|
||||||
|
assertEquals(45, mDisplayDeviceConfig.getDefaultRefreshRate());
|
||||||
assertArrayEquals(new int[]{45, 55},
|
assertArrayEquals(new int[]{45, 55},
|
||||||
mDisplayDeviceConfig.getLowDisplayBrightnessThresholds());
|
mDisplayDeviceConfig.getLowDisplayBrightnessThresholds());
|
||||||
assertArrayEquals(new int[]{50, 60},
|
assertArrayEquals(new int[]{50, 60},
|
||||||
@@ -230,8 +234,12 @@ public final class DisplayDeviceConfigTest {
|
|||||||
mDisplayDeviceConfig.getAmbientDarkeningLevelsIdle(), ZERO_DELTA);
|
mDisplayDeviceConfig.getAmbientDarkeningLevelsIdle(), ZERO_DELTA);
|
||||||
assertArrayEquals(new float[]{29, 30, 31},
|
assertArrayEquals(new float[]{29, 30, 31},
|
||||||
mDisplayDeviceConfig.getAmbientDarkeningPercentagesIdle(), ZERO_DELTA);
|
mDisplayDeviceConfig.getAmbientDarkeningPercentagesIdle(), ZERO_DELTA);
|
||||||
assertEquals(mDisplayDeviceConfig.getDefaultLowRefreshRate(), DEFAULT_REFRESH_RATE);
|
assertEquals(mDisplayDeviceConfig.getDefaultLowBlockingZoneRefreshRate(),
|
||||||
assertEquals(mDisplayDeviceConfig.getDefaultHighRefreshRate(), DEFAULT_PEAK_REFRESH_RATE);
|
DEFAULT_LOW_BLOCKING_ZONE_REFRESH_RATE);
|
||||||
|
assertEquals(mDisplayDeviceConfig.getDefaultHighBlockingZoneRefreshRate(),
|
||||||
|
DEFAULT_HIGH_BLOCKING_ZONE_REFRESH_RATE);
|
||||||
|
assertEquals(mDisplayDeviceConfig.getDefaultPeakRefreshRate(), DEFAULT_PEAK_REFRESH_RATE);
|
||||||
|
assertEquals(mDisplayDeviceConfig.getDefaultRefreshRate(), DEFAULT_REFRESH_RATE);
|
||||||
assertArrayEquals(mDisplayDeviceConfig.getLowDisplayBrightnessThresholds(),
|
assertArrayEquals(mDisplayDeviceConfig.getLowDisplayBrightnessThresholds(),
|
||||||
LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE);
|
LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE);
|
||||||
assertArrayEquals(mDisplayDeviceConfig.getLowAmbientBrightnessThresholds(),
|
assertArrayEquals(mDisplayDeviceConfig.getLowAmbientBrightnessThresholds(),
|
||||||
@@ -449,6 +457,8 @@ public final class DisplayDeviceConfigTest {
|
|||||||
+ "<type>prox_type_1</type>\n"
|
+ "<type>prox_type_1</type>\n"
|
||||||
+ "</proxSensor>\n"
|
+ "</proxSensor>\n"
|
||||||
+ "<refreshRate>\n"
|
+ "<refreshRate>\n"
|
||||||
|
+ "<defaultRefreshRate>45</defaultRefreshRate>\n"
|
||||||
|
+ "<defaultPeakRefreshRate>85</defaultPeakRefreshRate>\n"
|
||||||
+ "<lowerBlockingZoneConfigs>\n"
|
+ "<lowerBlockingZoneConfigs>\n"
|
||||||
+ "<defaultRefreshRate>75</defaultRefreshRate>\n"
|
+ "<defaultRefreshRate>75</defaultRefreshRate>\n"
|
||||||
+ "<blockingZoneThreshold>\n"
|
+ "<blockingZoneThreshold>\n"
|
||||||
@@ -550,10 +560,14 @@ public final class DisplayDeviceConfigTest {
|
|||||||
.thenReturn(new int[]{370, 380, 390});
|
.thenReturn(new int[]{370, 380, 390});
|
||||||
|
|
||||||
// Configs related to refresh rates and blocking zones
|
// Configs related to refresh rates and blocking zones
|
||||||
when(mResources.getInteger(com.android.internal.R.integer.config_defaultPeakRefreshRate))
|
when(mResources.getInteger(R.integer.config_defaultPeakRefreshRate))
|
||||||
.thenReturn(DEFAULT_PEAK_REFRESH_RATE);
|
.thenReturn(DEFAULT_PEAK_REFRESH_RATE);
|
||||||
when(mResources.getInteger(com.android.internal.R.integer.config_defaultRefreshRate))
|
when(mResources.getInteger(R.integer.config_defaultRefreshRate))
|
||||||
.thenReturn(DEFAULT_REFRESH_RATE);
|
.thenReturn(DEFAULT_REFRESH_RATE);
|
||||||
|
when(mResources.getInteger(R.integer.config_fixedRefreshRateInHighZone))
|
||||||
|
.thenReturn(DEFAULT_HIGH_BLOCKING_ZONE_REFRESH_RATE);
|
||||||
|
when(mResources.getInteger(R.integer.config_defaultRefreshRateInZone))
|
||||||
|
.thenReturn(DEFAULT_LOW_BLOCKING_ZONE_REFRESH_RATE);
|
||||||
when(mResources.getIntArray(R.array.config_brightnessThresholdsOfPeakRefreshRate))
|
when(mResources.getIntArray(R.array.config_brightnessThresholdsOfPeakRefreshRate))
|
||||||
.thenReturn(LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE);
|
.thenReturn(LOW_BRIGHTNESS_THRESHOLD_OF_PEAK_REFRESH_RATE);
|
||||||
when(mResources.getIntArray(R.array.config_ambientThresholdsOfPeakRefreshRate))
|
when(mResources.getIntArray(R.array.config_ambientThresholdsOfPeakRefreshRate))
|
||||||
|
|||||||
@@ -1869,6 +1869,10 @@ public class DisplayModeDirectorTest {
|
|||||||
.thenReturn(75);
|
.thenReturn(75);
|
||||||
when(resources.getInteger(R.integer.config_defaultRefreshRate))
|
when(resources.getInteger(R.integer.config_defaultRefreshRate))
|
||||||
.thenReturn(45);
|
.thenReturn(45);
|
||||||
|
when(resources.getInteger(R.integer.config_fixedRefreshRateInHighZone))
|
||||||
|
.thenReturn(65);
|
||||||
|
when(resources.getInteger(R.integer.config_defaultRefreshRateInZone))
|
||||||
|
.thenReturn(85);
|
||||||
when(resources.getIntArray(R.array.config_brightnessThresholdsOfPeakRefreshRate))
|
when(resources.getIntArray(R.array.config_brightnessThresholdsOfPeakRefreshRate))
|
||||||
.thenReturn(new int[]{5});
|
.thenReturn(new int[]{5});
|
||||||
when(resources.getIntArray(R.array.config_ambientThresholdsOfPeakRefreshRate))
|
when(resources.getIntArray(R.array.config_ambientThresholdsOfPeakRefreshRate))
|
||||||
@@ -1888,6 +1892,8 @@ public class DisplayModeDirectorTest {
|
|||||||
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 45, 0.0);
|
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 45, 0.0);
|
||||||
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 75,
|
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 75,
|
||||||
0.0);
|
0.0);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInHighZone(), 65);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInLowZone(), 85);
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
||||||
new int[]{250});
|
new int[]{250});
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
||||||
@@ -1899,17 +1905,21 @@ public class DisplayModeDirectorTest {
|
|||||||
|
|
||||||
// Notify that the default display is updated, such that DisplayDeviceConfig has new values
|
// Notify that the default display is updated, such that DisplayDeviceConfig has new values
|
||||||
DisplayDeviceConfig displayDeviceConfig = mock(DisplayDeviceConfig.class);
|
DisplayDeviceConfig displayDeviceConfig = mock(DisplayDeviceConfig.class);
|
||||||
when(displayDeviceConfig.getDefaultLowRefreshRate()).thenReturn(50);
|
when(displayDeviceConfig.getDefaultLowBlockingZoneRefreshRate()).thenReturn(50);
|
||||||
when(displayDeviceConfig.getDefaultHighRefreshRate()).thenReturn(55);
|
when(displayDeviceConfig.getDefaultHighBlockingZoneRefreshRate()).thenReturn(55);
|
||||||
|
when(displayDeviceConfig.getDefaultRefreshRate()).thenReturn(60);
|
||||||
|
when(displayDeviceConfig.getDefaultPeakRefreshRate()).thenReturn(65);
|
||||||
when(displayDeviceConfig.getLowDisplayBrightnessThresholds()).thenReturn(new int[]{25});
|
when(displayDeviceConfig.getLowDisplayBrightnessThresholds()).thenReturn(new int[]{25});
|
||||||
when(displayDeviceConfig.getLowAmbientBrightnessThresholds()).thenReturn(new int[]{30});
|
when(displayDeviceConfig.getLowAmbientBrightnessThresholds()).thenReturn(new int[]{30});
|
||||||
when(displayDeviceConfig.getHighDisplayBrightnessThresholds()).thenReturn(new int[]{210});
|
when(displayDeviceConfig.getHighDisplayBrightnessThresholds()).thenReturn(new int[]{210});
|
||||||
when(displayDeviceConfig.getHighAmbientBrightnessThresholds()).thenReturn(new int[]{2100});
|
when(displayDeviceConfig.getHighAmbientBrightnessThresholds()).thenReturn(new int[]{2100});
|
||||||
director.defaultDisplayDeviceUpdated(displayDeviceConfig);
|
director.defaultDisplayDeviceUpdated(displayDeviceConfig);
|
||||||
|
|
||||||
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 50, 0.0);
|
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 60, 0.0);
|
||||||
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 55,
|
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 65,
|
||||||
0.0);
|
0.0);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInHighZone(), 55);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInLowZone(), 50);
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
||||||
new int[]{210});
|
new int[]{210});
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
||||||
@@ -1922,6 +1932,8 @@ public class DisplayModeDirectorTest {
|
|||||||
// Notify that the default display is updated, such that DeviceConfig has new values
|
// Notify that the default display is updated, such that DeviceConfig has new values
|
||||||
FakeDeviceConfig config = mInjector.getDeviceConfig();
|
FakeDeviceConfig config = mInjector.getDeviceConfig();
|
||||||
config.setDefaultPeakRefreshRate(60);
|
config.setDefaultPeakRefreshRate(60);
|
||||||
|
config.setRefreshRateInHighZone(65);
|
||||||
|
config.setRefreshRateInLowZone(70);
|
||||||
config.setLowAmbientBrightnessThresholds(new int[]{20});
|
config.setLowAmbientBrightnessThresholds(new int[]{20});
|
||||||
config.setLowDisplayBrightnessThresholds(new int[]{10});
|
config.setLowDisplayBrightnessThresholds(new int[]{10});
|
||||||
config.setHighDisplayBrightnessThresholds(new int[]{255});
|
config.setHighDisplayBrightnessThresholds(new int[]{255});
|
||||||
@@ -1929,9 +1941,11 @@ public class DisplayModeDirectorTest {
|
|||||||
|
|
||||||
director.defaultDisplayDeviceUpdated(displayDeviceConfig);
|
director.defaultDisplayDeviceUpdated(displayDeviceConfig);
|
||||||
|
|
||||||
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 50, 0.0);
|
assertEquals(director.getSettingsObserver().getDefaultRefreshRate(), 60, 0.0);
|
||||||
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 60,
|
assertEquals(director.getSettingsObserver().getDefaultPeakRefreshRate(), 60,
|
||||||
0.0);
|
0.0);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInHighZone(), 65);
|
||||||
|
assertEquals(director.getBrightnessObserver().getRefreshRateInLowZone(), 70);
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighDisplayBrightnessThreshold(),
|
||||||
new int[]{255});
|
new int[]{255});
|
||||||
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
assertArrayEquals(director.getBrightnessObserver().getHighAmbientBrightnessThreshold(),
|
||||||
@@ -1971,8 +1985,8 @@ public class DisplayModeDirectorTest {
|
|||||||
any(Handler.class));
|
any(Handler.class));
|
||||||
|
|
||||||
DisplayDeviceConfig ddcMock = mock(DisplayDeviceConfig.class);
|
DisplayDeviceConfig ddcMock = mock(DisplayDeviceConfig.class);
|
||||||
when(ddcMock.getDefaultLowRefreshRate()).thenReturn(50);
|
when(ddcMock.getDefaultLowBlockingZoneRefreshRate()).thenReturn(50);
|
||||||
when(ddcMock.getDefaultHighRefreshRate()).thenReturn(55);
|
when(ddcMock.getDefaultHighBlockingZoneRefreshRate()).thenReturn(55);
|
||||||
when(ddcMock.getLowDisplayBrightnessThresholds()).thenReturn(new int[]{25});
|
when(ddcMock.getLowDisplayBrightnessThresholds()).thenReturn(new int[]{25});
|
||||||
when(ddcMock.getLowAmbientBrightnessThresholds()).thenReturn(new int[]{30});
|
when(ddcMock.getLowAmbientBrightnessThresholds()).thenReturn(new int[]{30});
|
||||||
when(ddcMock.getHighDisplayBrightnessThresholds()).thenReturn(new int[]{210});
|
when(ddcMock.getHighDisplayBrightnessThresholds()).thenReturn(new int[]{210});
|
||||||
|
|||||||
Reference in New Issue
Block a user