summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/DisplayDevice.cpp
diff options
context:
space:
mode:
author Ady Abraham <adyabr@google.com> 2023-10-02 16:28:03 -0700
committer Ady Abraham <adyabr@google.com> 2023-10-02 23:29:29 +0000
commitddba9342cf79ea67328a845bb1b99635b2cbd00e (patch)
treed5c69269756fe8b444582ce1a09c105e010c6c79 /services/surfaceflinger/DisplayDevice.cpp
parent75751b266ce74773b3ab1e39e85a7badd1f899f3 (diff)
SF: avoid a nullptr access in RefreshRateOverlay / HDR overlay
Bug: 302312658 Test: presubmit + manual Change-Id: I3a69e4520be7f52779e1f92e5621a6138de08797
Diffstat (limited to 'services/surfaceflinger/DisplayDevice.cpp')
-rw-r--r--services/surfaceflinger/DisplayDevice.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 1faf6a1bcb..5b6591aeac 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -428,10 +428,12 @@ void DisplayDevice::enableHdrSdrRatioOverlay(bool enable) {
return;
}
- mHdrSdrRatioOverlay = std::make_unique<HdrSdrRatioOverlay>();
- mHdrSdrRatioOverlay->setLayerStack(getLayerStack());
- mHdrSdrRatioOverlay->setViewport(getSize());
- updateHdrSdrRatioOverlayRatio(mHdrSdrRatio);
+ mHdrSdrRatioOverlay = HdrSdrRatioOverlay::create();
+ if (mHdrSdrRatioOverlay) {
+ mHdrSdrRatioOverlay->setLayerStack(getLayerStack());
+ mHdrSdrRatioOverlay->setViewport(getSize());
+ updateHdrSdrRatioOverlayRatio(mHdrSdrRatio);
+ }
}
void DisplayDevice::updateHdrSdrRatioOverlayRatio(float currentHdrSdrRatio) {
@@ -468,11 +470,13 @@ void DisplayDevice::enableRefreshRateOverlay(bool enable, bool setByHwc, bool sh
// TODO(b/296636258) Update to use the render rate range in VRR mode.
const auto fpsRange = mRefreshRateSelector->getSupportedRefreshRateRange();
- mRefreshRateOverlay = std::make_unique<RefreshRateOverlay>(fpsRange, features);
- mRefreshRateOverlay->setLayerStack(getLayerStack());
- mRefreshRateOverlay->setViewport(getSize());
- updateRefreshRateOverlayRate(getActiveMode().modePtr->getVsyncRate(), getActiveMode().fps,
- setByHwc);
+ mRefreshRateOverlay = RefreshRateOverlay::create(fpsRange, features);
+ if (mRefreshRateOverlay) {
+ mRefreshRateOverlay->setLayerStack(getLayerStack());
+ mRefreshRateOverlay->setViewport(getSize());
+ updateRefreshRateOverlayRate(getActiveMode().modePtr->getVsyncRate(), getActiveMode().fps,
+ setByHwc);
+ }
}
void DisplayDevice::updateRefreshRateOverlayRate(Fps vsyncRate, Fps renderFps, bool setByHwc) {