diff options
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 16 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 4 |
2 files changed, 11 insertions, 9 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 5164d54bf1..6dc2c6d809 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -461,14 +461,13 @@ bool callingThreadHasRotateSurfaceFlingerAccess() { PermissionCache::checkPermission(sRotateSurfaceFlinger, pid, uid); } -void SurfaceFlinger::setRefreshRates( - std::unique_ptr<scheduler::RefreshRateConfigs> &refreshRateConfigs) { +void SurfaceFlinger::setRefreshRates(const sp<DisplayDevice>& display) { // Get Primary Smomo Instance. std::vector<float> refreshRates; - auto iter = refreshRateConfigs->getAllRefreshRates().cbegin(); - while (iter != refreshRateConfigs->getAllRefreshRates().cend()) { - if (refreshRateConfigs->isModeAllowed(iter->second->getModeId())) { + auto iter = display->refreshRateConfigs().getAllRefreshRates().cbegin(); + while (iter != display->refreshRateConfigs().getAllRefreshRates().cend()) { + if (display->refreshRateConfigs().isModeAllowed(iter->second->getModeId())) { refreshRates.push_back(iter->second->getFps().getValue()); } ++iter; @@ -1263,8 +1262,8 @@ void SurfaceFlinger::createSmomoInstance(const DisplayDeviceState& state) { setRefreshRateTo(refreshRate); }); - // b/223439401 Fix the following value-add - // setRefreshRates(mRefreshRateConfigs); + const auto display = getDefaultDisplayDeviceLocked(); + setRefreshRates(display); if (mSmomoInstances.size() > 1) { // Disable DRC on all instances. @@ -4768,6 +4767,7 @@ bool SurfaceFlinger::transactionIsReadyToBeApplied( if (smoMo) { ATRACE_BEGIN("smomo_begin"); if (smoMo->FrameIsEarly(layer->getSequence(), desiredPresentTime)) { + ATRACE_END(); return false; } ATRACE_END(); @@ -8363,6 +8363,8 @@ status_t SurfaceFlinger::setDesiredDisplayModeSpecsInternal( preferredDisplayMode->getId().value()); } + setRefreshRates(display); + return NO_ERROR; } diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 16305aa135..44394e50fc 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -902,7 +902,7 @@ private: // Check if unified draw supported void startUnifiedDraw(); void InitComposerExtn(); - void createSmomoInstance(const DisplayDeviceState& state); + void createSmomoInstance(const DisplayDeviceState& state) REQUIRES(mStateLock); void destroySmomoInstance(const sp<DisplayDevice>& display); // Returns whether a new buffer has been latched (see handlePageFlip()) @@ -1682,7 +1682,7 @@ private: void scheduleRegionSamplingThread(); void notifyRegionSamplingThread(); - void setRefreshRates(std::unique_ptr<scheduler::RefreshRateConfigs> &refreshRateConfigs); + void setRefreshRates(const sp<DisplayDevice>& display); void UpdateSmomoState(); bool isRefreshRateOverlayEnabled() const REQUIRES(mStateLock) { return std::any_of(mDisplays.begin(), mDisplays.end(), |