SurfaceFlinger: correct negative offset when refresh rate changes

VsyncModulator sets the phase offset on DispSync source only when it
changes. However, negative offsets depends on the vsync period so setting
the same negative offset might result in a different wake up time
i.e. -5ms on 60Hz is 11ms after the previous vsync where on 90Hz is
6ms after the previous vsync.

Test: UI-Bench
Bug: 135283780
Bug: 135297302
Change-Id: I6a05cd48d563a51d2ee38927c23d4946dd142f4b
diff --git a/services/surfaceflinger/Scheduler/DispSyncSource.cpp b/services/surfaceflinger/Scheduler/DispSyncSource.cpp
index 026b557..5faf46e 100644
--- a/services/surfaceflinger/Scheduler/DispSyncSource.cpp
+++ b/services/surfaceflinger/Scheduler/DispSyncSource.cpp
@@ -78,6 +78,10 @@
     // Normalize phaseOffset to [-period, period)
     const int numPeriods = phaseOffset / period;
     phaseOffset -= numPeriods * period;
+    if (mPhaseOffset == phaseOffset) {
+        return;
+    }
+
     mPhaseOffset = phaseOffset;
     tracePhaseOffset();