SF: Merge on{,Non}PrimaryDisplayModeChanged
Branch on the pacesetter rather than active display, though they are the
same display in practice for now.
Bug: 255635821
Flag: EXEMPT refactor
Test: presubmit
Change-Id: I40d73e79075893826492b85c27e35eed59b4b289
diff --git a/services/surfaceflinger/Scheduler/Scheduler.cpp b/services/surfaceflinger/Scheduler/Scheduler.cpp
index b711027..6b31135 100644
--- a/services/surfaceflinger/Scheduler/Scheduler.cpp
+++ b/services/surfaceflinger/Scheduler/Scheduler.cpp
@@ -424,8 +424,12 @@
eventThreadFor(cycle).onHdcpLevelsChanged(displayId, connectedLevel, maxLevel);
}
-void Scheduler::onPrimaryDisplayModeChanged(const FrameRateMode& mode) {
- {
+bool Scheduler::onDisplayModeChanged(PhysicalDisplayId displayId, const FrameRateMode& mode) {
+ const bool isPacesetter =
+ FTL_FAKE_GUARD(kMainThreadContext,
+ (std::scoped_lock(mDisplayLock), displayId == mPacesetterDisplayId));
+
+ if (isPacesetter) {
std::lock_guard<std::mutex> lock(mPolicyLock);
mPolicy.emittedModeOpt = mode;
@@ -433,7 +437,12 @@
// again for the new refresh rate.
mPolicy.contentRequirements.clear();
}
- onNonPrimaryDisplayModeChanged(mode);
+
+ if (hasEventThreads()) {
+ eventThreadFor(Cycle::Render).onModeChanged(mode);
+ }
+
+ return isPacesetter;
}
void Scheduler::emitModeChangeIfNeeded() {
@@ -455,10 +464,7 @@
}
mPolicy.emittedModeOpt = mode;
- onNonPrimaryDisplayModeChanged(mode);
-}
-void Scheduler::onNonPrimaryDisplayModeChanged(const FrameRateMode& mode) {
if (hasEventThreads()) {
eventThreadFor(Cycle::Render).onModeChanged(mode);
}