Mac: Recompute vsync parameters every 10 seconds

Continuously running the display link thread is expensive, but the vsync
parameters skew very quickly (about 0.1 msec per second, which will get
you a half-vsync off in a minute).

Strike a compromise by running the display link for a single tick, every
ten seconds.

BUG=510252

Review URL: https://codereview.chromium.org/1298513004

Cr-Commit-Position: refs/heads/master@{#343739}
diff --git a/ui/accelerated_widget_mac/display_link_mac.cc b/ui/accelerated_widget_mac/display_link_mac.cc
index ec479d8..1945d2bc 100644
--- a/ui/accelerated_widget_mac/display_link_mac.cc
+++ b/ui/accelerated_widget_mac/display_link_mac.cc
@@ -108,6 +108,11 @@
   return true;
 }
 
+void DisplayLinkMac::NotifyCurrentTime(const base::TimeTicks& now) {
+  if (now >= recalculate_time_)
+    StartOrContinueDisplayLink();
+}
+
 void DisplayLinkMac::Tick(const CVTimeStamp& cv_time) {
   TRACE_EVENT0("ui", "DisplayLinkMac::Tick");
 
@@ -128,6 +133,9 @@
       1000000 * static_cast<int64>(numerator) / denominator);
   timebase_and_interval_valid_ = true;
 
+  // Don't restart the display link for 10 seconds.
+  recalculate_time_ = base::TimeTicks::Now() +
+                      base::TimeDelta::FromSeconds(10);
   StopDisplayLink();
 }