SurfaceFlinger: check pending fence when set active config is pending
ag/9653007 moved performSetActiveConfig() after the check for whether
previous frame was missed or not. This creates a logical loop with the
inactivity timer logic as the timer is reset while we try to change
the active config.
Bug: 152321942
Test: trigger refresh rate and observe refresh rate
Change-Id: I081ef8123ed46b979eae804a47c4d06491df877c
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 12efca1..76d6b8c 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -565,11 +565,9 @@
// Once HWC has returned the present fence, this sets the active config and a new refresh
// rate in SF.
void setActiveConfigInternal() REQUIRES(mStateLock);
- // Active config is updated on INVALIDATE call in a state machine-like manner. When the
- // desired config was set, HWC needs to update the panel on the next refresh, and when
- // we receive the fence back, we know that the process was complete. It returns whether
- // we need to wait for the next invalidate
- bool performSetActiveConfig() REQUIRES(mStateLock);
+ // Calls to setActiveConfig on the main thread if there is a pending config
+ // that needs to be applied.
+ void performSetActiveConfig() REQUIRES(mStateLock);
// Called when active config is no longer is progress
void desiredActiveConfigChangeDone() REQUIRES(mStateLock);
// called on the main thread in response to setPowerMode()
@@ -1225,7 +1223,7 @@
// below flags are set by main thread only
TracedOrdinal<bool> mDesiredActiveConfigChanged
GUARDED_BY(mActiveConfigLock) = {"DesiredActiveConfigChanged", false};
- bool mCheckPendingFence = false;
+ bool mSetActiveConfigPending = false;
bool mLumaSampling = true;
sp<RegionSamplingThread> mRegionSamplingThread;