diff options
author | 2023-10-02 16:28:03 -0700 | |
---|---|---|
committer | 2023-10-02 23:29:29 +0000 | |
commit | ddba9342cf79ea67328a845bb1b99635b2cbd00e (patch) | |
tree | d5c69269756fe8b444582ce1a09c105e010c6c79 /services/surfaceflinger/DisplayDevice.cpp | |
parent | 75751b266ce74773b3ab1e39e85a7badd1f899f3 (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.cpp | 22 |
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) { |