Code

Corrected initialization order.
[inkscape.git] / src / debug / gdk-event-latency-tracker.cpp
index 6a8a48eb3c28e3f9ed266477bb6a345d37522d3e..a6baae8dae47c5f6e360abcf088d0e54b09a05ba 100644 (file)
  */
 
 #include "debug/gdk-event-latency-tracker.h"
-#include "prefs-utils.h"
+#include "preferences.h"
 
 namespace Inkscape {
 namespace Debug {
 
 GdkEventLatencyTracker::GdkEventLatencyTracker()
-    : start_seconds(0.0), max_latency(0.0), skew(1.0)
+    : start_seconds(0.0), max_latency(0.0), skew(1.0), last_elapsed(0.0), last_seconds(0.0)
 {
     elapsed.stop();
     elapsed.reset();
@@ -32,10 +32,13 @@ boost::optional<double> GdkEventLatencyTracker::process(GdkEvent const *event) {
     if (start_seconds == 0.0) {
         elapsed.start();
         start_seconds = timestamp_seconds;
-        skew = prefs_get_double_attribute_limited("debug.latency", "skew", 1.0, 0.5, 2.0);
+        Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+        skew = prefs->getDoubleLimited("/debug/latency/skew", 1.0, 0.5, 2.0);
         return boost::optional<double>(0.0);
     } else {
-        double const current_seconds = (elapsed.elapsed() * skew) + start_seconds;
+        last_elapsed = elapsed.elapsed();
+        last_seconds = timestamp_seconds;
+        double const current_seconds = (last_elapsed * skew) + start_seconds;
         double delta = current_seconds - timestamp_seconds;
         if (delta < 0.0) {
             start_seconds += -delta;
@@ -47,6 +50,14 @@ boost::optional<double> GdkEventLatencyTracker::process(GdkEvent const *event) {
     }
 }
 
+double GdkEventLatencyTracker::getSkew() {
+    double val = 0.0;
+    if ((last_elapsed > 0.0) && (last_seconds > 0.0)) {
+        val = (last_seconds - start_seconds) / last_elapsed;
+    }
+    return val;
+}
+
 GdkEventLatencyTracker &GdkEventLatencyTracker::default_tracker() {
     static GdkEventLatencyTracker tracker;
     return tracker;