Correct error handling in getPreferredBootDisplayMode
Bug: 217335654
Test: verified on forrest
Change-Id: I685a2e3b4f80c0898f778a170a30f882f640adb4
diff --git a/services/surfaceflinger/CompositionEngine/src/Display.cpp b/services/surfaceflinger/CompositionEngine/src/Display.cpp
index 1ea13a7..29c146b 100644
--- a/services/surfaceflinger/CompositionEngine/src/Display.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/Display.cpp
@@ -59,9 +59,13 @@
setName(args.name);
bool isBootModeSupported = getCompositionEngine().getHwComposer().getBootDisplayModeSupport();
const auto physicalId = PhysicalDisplayId::tryCast(mId);
- if (physicalId && isBootModeSupported) {
- mPreferredBootDisplayModeId = static_cast<int32_t>(
- getCompositionEngine().getHwComposer().getPreferredBootDisplayMode(*physicalId));
+ if (!physicalId || !isBootModeSupported) {
+ return;
+ }
+ std::optional<hal::HWConfigId> preferredBootModeId =
+ getCompositionEngine().getHwComposer().getPreferredBootDisplayMode(*physicalId);
+ if (preferredBootModeId.has_value()) {
+ mPreferredBootDisplayModeId = static_cast<int32_t>(preferredBootModeId.value());
}
}