SF: Clean up plumbing for boot display mode
Avoid CE round trip, and validate API against virtual displays.
Bug: 182939859
Test: Boot
Change-Id: Ic4e14dcc06218097c65f9374f2962a345d347820
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 45b98bb..99335e5 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -227,21 +227,23 @@
}
DisplayModePtr DisplayDevice::getMode(DisplayModeId modeId) const {
- const auto it = std::find_if(mSupportedModes.begin(), mSupportedModes.end(),
- [&](DisplayModePtr mode) { return mode->getId() == modeId; });
+ const auto it =
+ std::find_if(mSupportedModes.begin(), mSupportedModes.end(),
+ [&](const DisplayModePtr& mode) { return mode->getId() == modeId; });
if (it != mSupportedModes.end()) {
return *it;
}
return nullptr;
}
-DisplayModePtr DisplayDevice::getModefromHwcId(uint32_t hwcId) const {
- const auto it = std::find_if(mSupportedModes.begin(), mSupportedModes.end(),
- [&](DisplayModePtr mode) { return mode->getHwcId() == hwcId; });
+std::optional<DisplayModeId> DisplayDevice::translateModeId(hal::HWConfigId hwcId) const {
+ const auto it =
+ std::find_if(mSupportedModes.begin(), mSupportedModes.end(),
+ [&](const DisplayModePtr& mode) { return mode->getHwcId() == hwcId; });
if (it != mSupportedModes.end()) {
- return *it;
+ return (*it)->getId();
}
- return nullptr;
+ return {};
}
nsecs_t DisplayDevice::getVsyncPeriodFromHWC() const {
@@ -468,16 +470,6 @@
capabilities.getDesiredMinLuminance());
}
-ui::DisplayModeId DisplayDevice::getPreferredBootModeId() const {
- const auto preferredBootHwcModeId = mCompositionDisplay->getPreferredBootHwcConfigId();
- const auto mode = getModefromHwcId(preferredBootHwcModeId);
- if (mode == nullptr) {
- ALOGE("%s: invalid display mode (%d)", __FUNCTION__, preferredBootHwcModeId);
- return BAD_VALUE;
- }
- return mode->getId().value();
-}
-
void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinnner) {
if (!enable) {
mRefreshRateOverlay.reset();