SurfaceFlinger: call to changeRefreshRate on state change only
Check if Scheduler's idle timer / content detection changed before
calling to changeRefreshRate to avoid sending config changed events when
those are not neeed.
Test: scroll within calendar app and observe systraces
Bug: 130759239
Change-Id: If7bce0ac096630918decbf62c568baa5e17408f2
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 3744f8b..a51f020 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1005,6 +1005,7 @@
// display is not valid or we are already in the requested mode
// on both cases there is nothing left to do
std::lock_guard<std::mutex> lock(mActiveConfigLock);
+ mDesiredActiveConfig.event = Scheduler::ConfigEvent::None;
mDesiredActiveConfigChanged = false;
ATRACE_INT("DesiredActiveConfigChanged", mDesiredActiveConfigChanged);
return false;
@@ -1017,6 +1018,8 @@
std::lock_guard<std::mutex> lock(mActiveConfigLock);
mDesiredActiveConfig.event = Scheduler::ConfigEvent::None;
mDesiredActiveConfig.configId = display->getActiveConfig();
+ mDesiredActiveConfigChanged = false;
+ ATRACE_INT("DesiredActiveConfigChanged", mDesiredActiveConfigChanged);
return false;
}
mUpcomingActiveConfig = desiredActiveConfig;