summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp16
-rw-r--r--services/surfaceflinger/SurfaceFlinger.h4
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(),