Loading services/core/java/com/android/server/display/DisplayDeviceConfig.java +38 −5 Original line number Diff line number Diff line Loading @@ -154,6 +154,8 @@ import javax.xml.datatype.DatatypeConfigurationException; * <refreshRate> * <lowerBlockingZoneConfigs> * <defaultRefreshRate>75</defaultRefreshRate> * <defaultRefreshRateInHbmHdr>75</defaultRefreshRateInHbmHdr> * <defaultRefreshRateInHbmSunlight>75</defaultRefreshRateInHbmSunlight> * <blockingZoneThreshold> * <displayBrightnessPoint> * <lux>50</lux> Loading Loading @@ -429,6 +431,7 @@ public class DisplayDeviceConfig { 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_REFRESH_RATE_IN_HBM = 0; private static final int DEFAULT_LOW_REFRESH_RATE = 60; private static final int DEFAULT_HIGH_REFRESH_RATE = 0; private static final int[] DEFAULT_BRIGHTNESS_THRESHOLDS = new int[]{}; Loading Loading @@ -608,6 +611,15 @@ public class DisplayDeviceConfig { */ private int mDefaultRefreshRate = DEFAULT_REFRESH_RATE; /** * Default refresh rate while the device has high brightness mode enabled for HDR. */ private int mDefaultRefreshRateInHbmHdr = DEFAULT_REFRESH_RATE_IN_HBM; /** * Default refresh rate while the device has high brightness mode enabled for Sunlight. */ private int mDefaultRefreshRateInHbmSunlight = DEFAULT_REFRESH_RATE_IN_HBM; /** * 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. Loading Loading @@ -1348,8 +1360,7 @@ public class DisplayDeviceConfig { * @return Default refresh rate while the device has high brightness mode enabled for HDR. */ public int getDefaultRefreshRateInHbmHdr() { return mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmHdr); return mDefaultRefreshRateInHbmHdr; } /** Loading @@ -1357,8 +1368,7 @@ public class DisplayDeviceConfig { * high lux. */ public int getDefaultRefreshRateInHbmSunlight() { return mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmSunlight); return mDefaultRefreshRateInHbmSunlight; } /** Loading Loading @@ -1540,6 +1550,8 @@ public class DisplayDeviceConfig { + ", mDefaultPeakRefreshRate= " + mDefaultPeakRefreshRate + ", mDefaultRefreshRate= " + mDefaultRefreshRate + ", mRefreshRateZoneProfiles= " + mRefreshRateZoneProfiles + ", mDefaultRefreshRateInHbmHdr= " + mDefaultRefreshRateInHbmHdr + ", mDefaultRefreshRateInHbmSunlight= " + mDefaultRefreshRateInHbmSunlight + ", mLowDisplayBrightnessThresholds= " + Arrays.toString(mLowDisplayBrightnessThresholds) + ", mLowAmbientBrightnessThresholds= " Loading Loading @@ -1866,6 +1878,7 @@ public class DisplayDeviceConfig { : refreshRateConfigs.getHigherBlockingZoneConfigs(); loadPeakDefaultRefreshRate(refreshRateConfigs); loadDefaultRefreshRate(refreshRateConfigs); loadDefaultRefreshRateInHbm(refreshRateConfigs); loadLowerRefreshRateBlockingZones(lowerBlockingZoneConfig); loadHigherRefreshRateBlockingZones(higherBlockingZoneConfig); loadRefreshRateZoneProfiles(refreshRateConfigs); Loading Loading @@ -1906,6 +1919,26 @@ public class DisplayDeviceConfig { } } private void loadDefaultRefreshRateInHbm(RefreshRateConfigs refreshRateConfigs) { if (refreshRateConfigs != null && refreshRateConfigs.getDefaultRefreshRateInHbmHdr() != null) { mDefaultRefreshRateInHbmHdr = refreshRateConfigs.getDefaultRefreshRateInHbmHdr() .intValue(); } else { mDefaultRefreshRateInHbmHdr = mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmHdr); } if (refreshRateConfigs != null && refreshRateConfigs.getDefaultRefreshRateInHbmSunlight() != null) { mDefaultRefreshRateInHbmSunlight = refreshRateConfigs.getDefaultRefreshRateInHbmSunlight().intValue(); } else { mDefaultRefreshRateInHbmSunlight = mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmSunlight); } } /** * Loads the refresh rate configurations pertaining to the upper blocking zones. */ Loading services/core/xsd/display-device-config/display-device-config.xsd +8 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,14 @@ minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="defaultRefreshRateInHbmHdr" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="defaultRefreshRateInHbmSunlight" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> Loading services/core/xsd/display-device-config/schema/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -192,11 +192,15 @@ package com.android.server.display.config { ctor public RefreshRateConfigs(); method public final java.math.BigInteger getDefaultPeakRefreshRate(); method public final java.math.BigInteger getDefaultRefreshRate(); method public final java.math.BigInteger getDefaultRefreshRateInHbmHdr(); method public final java.math.BigInteger getDefaultRefreshRateInHbmSunlight(); 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.RefreshRateZoneProfiles getRefreshRateZoneProfiles(); method public final void setDefaultPeakRefreshRate(java.math.BigInteger); method public final void setDefaultRefreshRate(java.math.BigInteger); method public final void setDefaultRefreshRateInHbmHdr(java.math.BigInteger); method public final void setDefaultRefreshRateInHbmSunlight(java.math.BigInteger); 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 setRefreshRateZoneProfiles(com.android.server.display.config.RefreshRateZoneProfiles); Loading services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java +4 −2 Original line number Diff line number Diff line Loading @@ -157,13 +157,13 @@ public final class DisplayDeviceConfigTest { assertEquals(90, mDisplayDeviceConfig.getDefaultHighBlockingZoneRefreshRate()); assertEquals(85, mDisplayDeviceConfig.getDefaultPeakRefreshRate()); assertEquals(45, mDisplayDeviceConfig.getDefaultRefreshRate()); assertEquals(2, mDisplayDeviceConfig.getRefreshRangeProfiles().size()); assertEquals(60, mDisplayDeviceConfig.getRefreshRange("test1").min, SMALL_DELTA); assertEquals(60, mDisplayDeviceConfig.getRefreshRange("test1").max, SMALL_DELTA); assertEquals(80, mDisplayDeviceConfig.getRefreshRange("test2").min, SMALL_DELTA); assertEquals(90, mDisplayDeviceConfig.getRefreshRange("test2").max, SMALL_DELTA); assertEquals(82, mDisplayDeviceConfig.getDefaultRefreshRateInHbmHdr()); assertEquals(83, mDisplayDeviceConfig.getDefaultRefreshRateInHbmSunlight()); assertArrayEquals(new int[]{45, 55}, mDisplayDeviceConfig.getLowDisplayBrightnessThresholds()); assertArrayEquals(new int[]{50, 60}, Loading Loading @@ -575,6 +575,8 @@ public final class DisplayDeviceConfigTest { + "</refreshRateRange>\n" + "</refreshRateZoneProfile>\n" + "</refreshRateZoneProfiles>" + "<defaultRefreshRateInHbmHdr>82</defaultRefreshRateInHbmHdr>\n" + "<defaultRefreshRateInHbmSunlight>83</defaultRefreshRateInHbmSunlight>\n" + "<lowerBlockingZoneConfigs>\n" + "<defaultRefreshRate>75</defaultRefreshRate>\n" + "<blockingZoneThreshold>\n" Loading Loading
services/core/java/com/android/server/display/DisplayDeviceConfig.java +38 −5 Original line number Diff line number Diff line Loading @@ -154,6 +154,8 @@ import javax.xml.datatype.DatatypeConfigurationException; * <refreshRate> * <lowerBlockingZoneConfigs> * <defaultRefreshRate>75</defaultRefreshRate> * <defaultRefreshRateInHbmHdr>75</defaultRefreshRateInHbmHdr> * <defaultRefreshRateInHbmSunlight>75</defaultRefreshRateInHbmSunlight> * <blockingZoneThreshold> * <displayBrightnessPoint> * <lux>50</lux> Loading Loading @@ -429,6 +431,7 @@ public class DisplayDeviceConfig { 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_REFRESH_RATE_IN_HBM = 0; private static final int DEFAULT_LOW_REFRESH_RATE = 60; private static final int DEFAULT_HIGH_REFRESH_RATE = 0; private static final int[] DEFAULT_BRIGHTNESS_THRESHOLDS = new int[]{}; Loading Loading @@ -608,6 +611,15 @@ public class DisplayDeviceConfig { */ private int mDefaultRefreshRate = DEFAULT_REFRESH_RATE; /** * Default refresh rate while the device has high brightness mode enabled for HDR. */ private int mDefaultRefreshRateInHbmHdr = DEFAULT_REFRESH_RATE_IN_HBM; /** * Default refresh rate while the device has high brightness mode enabled for Sunlight. */ private int mDefaultRefreshRateInHbmSunlight = DEFAULT_REFRESH_RATE_IN_HBM; /** * 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. Loading Loading @@ -1348,8 +1360,7 @@ public class DisplayDeviceConfig { * @return Default refresh rate while the device has high brightness mode enabled for HDR. */ public int getDefaultRefreshRateInHbmHdr() { return mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmHdr); return mDefaultRefreshRateInHbmHdr; } /** Loading @@ -1357,8 +1368,7 @@ public class DisplayDeviceConfig { * high lux. */ public int getDefaultRefreshRateInHbmSunlight() { return mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmSunlight); return mDefaultRefreshRateInHbmSunlight; } /** Loading Loading @@ -1540,6 +1550,8 @@ public class DisplayDeviceConfig { + ", mDefaultPeakRefreshRate= " + mDefaultPeakRefreshRate + ", mDefaultRefreshRate= " + mDefaultRefreshRate + ", mRefreshRateZoneProfiles= " + mRefreshRateZoneProfiles + ", mDefaultRefreshRateInHbmHdr= " + mDefaultRefreshRateInHbmHdr + ", mDefaultRefreshRateInHbmSunlight= " + mDefaultRefreshRateInHbmSunlight + ", mLowDisplayBrightnessThresholds= " + Arrays.toString(mLowDisplayBrightnessThresholds) + ", mLowAmbientBrightnessThresholds= " Loading Loading @@ -1866,6 +1878,7 @@ public class DisplayDeviceConfig { : refreshRateConfigs.getHigherBlockingZoneConfigs(); loadPeakDefaultRefreshRate(refreshRateConfigs); loadDefaultRefreshRate(refreshRateConfigs); loadDefaultRefreshRateInHbm(refreshRateConfigs); loadLowerRefreshRateBlockingZones(lowerBlockingZoneConfig); loadHigherRefreshRateBlockingZones(higherBlockingZoneConfig); loadRefreshRateZoneProfiles(refreshRateConfigs); Loading Loading @@ -1906,6 +1919,26 @@ public class DisplayDeviceConfig { } } private void loadDefaultRefreshRateInHbm(RefreshRateConfigs refreshRateConfigs) { if (refreshRateConfigs != null && refreshRateConfigs.getDefaultRefreshRateInHbmHdr() != null) { mDefaultRefreshRateInHbmHdr = refreshRateConfigs.getDefaultRefreshRateInHbmHdr() .intValue(); } else { mDefaultRefreshRateInHbmHdr = mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmHdr); } if (refreshRateConfigs != null && refreshRateConfigs.getDefaultRefreshRateInHbmSunlight() != null) { mDefaultRefreshRateInHbmSunlight = refreshRateConfigs.getDefaultRefreshRateInHbmSunlight().intValue(); } else { mDefaultRefreshRateInHbmSunlight = mContext.getResources().getInteger( R.integer.config_defaultRefreshRateInHbmSunlight); } } /** * Loads the refresh rate configurations pertaining to the upper blocking zones. */ Loading
services/core/xsd/display-device-config/display-device-config.xsd +8 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,14 @@ minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="defaultRefreshRateInHbmHdr" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="defaultRefreshRateInHbmSunlight" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> <xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> Loading
services/core/xsd/display-device-config/schema/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -192,11 +192,15 @@ package com.android.server.display.config { ctor public RefreshRateConfigs(); method public final java.math.BigInteger getDefaultPeakRefreshRate(); method public final java.math.BigInteger getDefaultRefreshRate(); method public final java.math.BigInteger getDefaultRefreshRateInHbmHdr(); method public final java.math.BigInteger getDefaultRefreshRateInHbmSunlight(); 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.RefreshRateZoneProfiles getRefreshRateZoneProfiles(); method public final void setDefaultPeakRefreshRate(java.math.BigInteger); method public final void setDefaultRefreshRate(java.math.BigInteger); method public final void setDefaultRefreshRateInHbmHdr(java.math.BigInteger); method public final void setDefaultRefreshRateInHbmSunlight(java.math.BigInteger); 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 setRefreshRateZoneProfiles(com.android.server.display.config.RefreshRateZoneProfiles); Loading
services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java +4 −2 Original line number Diff line number Diff line Loading @@ -157,13 +157,13 @@ public final class DisplayDeviceConfigTest { assertEquals(90, mDisplayDeviceConfig.getDefaultHighBlockingZoneRefreshRate()); assertEquals(85, mDisplayDeviceConfig.getDefaultPeakRefreshRate()); assertEquals(45, mDisplayDeviceConfig.getDefaultRefreshRate()); assertEquals(2, mDisplayDeviceConfig.getRefreshRangeProfiles().size()); assertEquals(60, mDisplayDeviceConfig.getRefreshRange("test1").min, SMALL_DELTA); assertEquals(60, mDisplayDeviceConfig.getRefreshRange("test1").max, SMALL_DELTA); assertEquals(80, mDisplayDeviceConfig.getRefreshRange("test2").min, SMALL_DELTA); assertEquals(90, mDisplayDeviceConfig.getRefreshRange("test2").max, SMALL_DELTA); assertEquals(82, mDisplayDeviceConfig.getDefaultRefreshRateInHbmHdr()); assertEquals(83, mDisplayDeviceConfig.getDefaultRefreshRateInHbmSunlight()); assertArrayEquals(new int[]{45, 55}, mDisplayDeviceConfig.getLowDisplayBrightnessThresholds()); assertArrayEquals(new int[]{50, 60}, Loading Loading @@ -575,6 +575,8 @@ public final class DisplayDeviceConfigTest { + "</refreshRateRange>\n" + "</refreshRateZoneProfile>\n" + "</refreshRateZoneProfiles>" + "<defaultRefreshRateInHbmHdr>82</defaultRefreshRateInHbmHdr>\n" + "<defaultRefreshRateInHbmSunlight>83</defaultRefreshRateInHbmSunlight>\n" + "<lowerBlockingZoneConfigs>\n" + "<defaultRefreshRate>75</defaultRefreshRate>\n" + "<blockingZoneThreshold>\n" Loading