Loading core/java/com/android/internal/display/RefreshRateSettingsUtils.java +29 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.display; import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED; import android.content.Context; import android.hardware.display.DisplayManager; import android.util.Log; Loading Loading @@ -54,4 +56,31 @@ public class RefreshRateSettingsUtils { } return maxRefreshRate; } /** * Find the highest refresh rate among all the modes of all the displays. * * This method will acquire DisplayManager.mLock, so calling it while holding other locks * should be done with care. * @param context The context * @return The highest refresh rate */ public static float findHighestRefreshRateAmongAllDisplays(Context context) { final DisplayManager dm = context.getSystemService(DisplayManager.class); final Display[] displays = dm.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED); if (displays.length == 0) { Log.w(TAG, "No valid display devices"); return DEFAULT_REFRESH_RATE; } float maxRefreshRate = DEFAULT_REFRESH_RATE; for (Display display : displays) { for (Display.Mode mode : display.getSupportedModes()) { if (mode.getRefreshRate() > maxRefreshRate) { maxRefreshRate = mode.getRefreshRate(); } } } return maxRefreshRate; } } services/tests/displayservicetests/src/com/android/server/display/RefreshRateSettingsUtilsTest.java +36 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.display; import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED; import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE; import static org.junit.Assert.assertEquals; Loading Loading @@ -50,6 +52,8 @@ public class RefreshRateSettingsUtilsTest { private DisplayManager mDisplayManagerMock; @Mock private Display mDisplayMock; @Mock private Display mDisplayMock2; @Before public void setUp() { Loading @@ -65,25 +69,54 @@ public class RefreshRateSettingsUtilsTest { new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 90) }; when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); when(mDisplayMock.getSupportedModes()).thenReturn(modes); Display.Mode[] modes2 = new Display.Mode[]{ new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 70), new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 130), new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 80) }; when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY + 1)).thenReturn(mDisplayMock2); when(mDisplayMock2.getSupportedModes()).thenReturn(modes2); when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) .thenReturn(new Display[]{ mDisplayMock, mDisplayMock2 }); } @Test public void testFindHighestRefreshRateForDefaultDisplay() { when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); assertEquals(120, RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRate_DisplayIsNull() { public void testFindHighestRefreshRateForDefaultDisplay_DisplayIsNull() { when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(null); assertEquals(DEFAULT_REFRESH_RATE, RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRateAmongAllDisplays() { assertEquals(130, RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRateAmongAllDisplays_NoDisplays() { when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) .thenReturn(new Display[0]); assertEquals(DEFAULT_REFRESH_RATE, RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays(mContext), /* delta= */ 0); } } Loading
core/java/com/android/internal/display/RefreshRateSettingsUtils.java +29 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.display; import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED; import android.content.Context; import android.hardware.display.DisplayManager; import android.util.Log; Loading Loading @@ -54,4 +56,31 @@ public class RefreshRateSettingsUtils { } return maxRefreshRate; } /** * Find the highest refresh rate among all the modes of all the displays. * * This method will acquire DisplayManager.mLock, so calling it while holding other locks * should be done with care. * @param context The context * @return The highest refresh rate */ public static float findHighestRefreshRateAmongAllDisplays(Context context) { final DisplayManager dm = context.getSystemService(DisplayManager.class); final Display[] displays = dm.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED); if (displays.length == 0) { Log.w(TAG, "No valid display devices"); return DEFAULT_REFRESH_RATE; } float maxRefreshRate = DEFAULT_REFRESH_RATE; for (Display display : displays) { for (Display.Mode mode : display.getSupportedModes()) { if (mode.getRefreshRate() > maxRefreshRate) { maxRefreshRate = mode.getRefreshRate(); } } } return maxRefreshRate; } }
services/tests/displayservicetests/src/com/android/server/display/RefreshRateSettingsUtilsTest.java +36 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.display; import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED; import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE; import static org.junit.Assert.assertEquals; Loading Loading @@ -50,6 +52,8 @@ public class RefreshRateSettingsUtilsTest { private DisplayManager mDisplayManagerMock; @Mock private Display mDisplayMock; @Mock private Display mDisplayMock2; @Before public void setUp() { Loading @@ -65,25 +69,54 @@ public class RefreshRateSettingsUtilsTest { new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 90) }; when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); when(mDisplayMock.getSupportedModes()).thenReturn(modes); Display.Mode[] modes2 = new Display.Mode[]{ new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 70), new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 130), new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, /* refreshRate= */ 80) }; when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY + 1)).thenReturn(mDisplayMock2); when(mDisplayMock2.getSupportedModes()).thenReturn(modes2); when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) .thenReturn(new Display[]{ mDisplayMock, mDisplayMock2 }); } @Test public void testFindHighestRefreshRateForDefaultDisplay() { when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); assertEquals(120, RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRate_DisplayIsNull() { public void testFindHighestRefreshRateForDefaultDisplay_DisplayIsNull() { when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(null); assertEquals(DEFAULT_REFRESH_RATE, RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRateAmongAllDisplays() { assertEquals(130, RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays(mContext), /* delta= */ 0); } @Test public void testFindHighestRefreshRateAmongAllDisplays_NoDisplays() { when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) .thenReturn(new Display[0]); assertEquals(DEFAULT_REFRESH_RATE, RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays(mContext), /* delta= */ 0); } }