From 0a65f0efbf788f979345e5350281e934773d3a16 Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Mon, 28 Jun 2021 17:13:41 -0700 Subject: [PATCH] DisplayModeService: check for null before accessing display mode Bug: 170502573 Bug: 192354057 Test: systemui votes for a preferredRefreshRate that is not supported by the device Change-Id: I36fed8e4c9d4c2990d2bc5247f6fb580af551220 --- .../android/server/display/DisplayManagerService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 182a038d10f74..0decd33936723 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -1528,8 +1528,14 @@ public final class DisplayManagerService extends SystemService { if (requestedModeId == 0 && requestedRefreshRate != 0) { // Scan supported modes returned by display.getInfo() to find a mode with the same // size as the default display mode but with the specified refresh rate instead. - requestedModeId = display.getDisplayInfoLocked().findDefaultModeByRefreshRate( - requestedRefreshRate).getModeId(); + Display.Mode mode = display.getDisplayInfoLocked().findDefaultModeByRefreshRate( + requestedRefreshRate); + if (mode != null) { + requestedModeId = mode.getModeId(); + } else { + Slog.e(TAG, "Couldn't find a mode for the requestedRefreshRate: " + + requestedRefreshRate + " on Display: " + displayId); + } } mDisplayModeDirector.getAppRequestObserver().setAppRequest( displayId, requestedModeId, requestedMaxRefreshRate);