SF: DispSync should sync to activeConfig period

HWC@2.4 has the getDisplayVSyncPeriod method added, which was
being queried around rate-change events, and the returned value
was sent to the DispSync system as the period to synchronize to.

Some devices will have irregular vsync intervals coming out of certain
power-saving states, and the HWC was reporting an irregular vsync
period, relative to the activeConfig's period. This could manifest as
transient de-synchronization in DispSync (currently used code), and
in the VSyncReactor system (switched off) a bad rate would be adopted.

Fixes: 147734678
Test: uibench with VSyncReactor system
Test: uibench with DispSync system

Change-Id: Ia98b3f09893004b4420487385e0d1653dcfd2d8d
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 1796476..ed222a6 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -875,7 +875,7 @@
         repaintEverythingForHWC();
         // Start receiving vsync samples now, so that we can detect a period
         // switch.
-        mScheduler->resyncToHardwareVsync(true, getVsyncPeriod());
+        mScheduler->resyncToHardwareVsync(true, refreshRate.vsyncPeriod);
         // As we called to set period, we will call to onRefreshRateChangeCompleted once
         // DispSync model is locked.
         mVSyncModulator->onRefreshRateChangeInitiated();
@@ -952,9 +952,9 @@
     mDesiredActiveConfig.event = Scheduler::ConfigEvent::None;
     mDesiredActiveConfigChanged = false;
 
-    mScheduler->resyncToHardwareVsync(true, getVsyncPeriod());
-    auto refreshRate =
+    auto const refreshRate =
             mRefreshRateConfigs->getRefreshRateFromConfigId(mDesiredActiveConfig.configId);
+    mScheduler->resyncToHardwareVsync(true, refreshRate.vsyncPeriod);
     mPhaseConfiguration->setRefreshRateFps(refreshRate.fps);
     mVSyncModulator->setPhaseOffsets(mPhaseConfiguration->getCurrentOffsets());
 }