From d0ba4ee9dc1e622d0ee4fabfc657c019559e7692 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sun, 27 Jul 2008 06:22:56 +0000 Subject: Add tracking of skew factor and display in warning message. (bzr r6429) --- src/debug/gdk-event-latency-tracker.cpp | 14 ++++++++++++-- src/debug/gdk-event-latency-tracker.h | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/debug') diff --git a/src/debug/gdk-event-latency-tracker.cpp b/src/debug/gdk-event-latency-tracker.cpp index 6a8a48eb3..cfd5a9b71 100644 --- a/src/debug/gdk-event-latency-tracker.cpp +++ b/src/debug/gdk-event-latency-tracker.cpp @@ -16,7 +16,7 @@ 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(); @@ -35,7 +35,9 @@ boost::optional GdkEventLatencyTracker::process(GdkEvent const *event) { skew = prefs_get_double_attribute_limited("debug.latency", "skew", 1.0, 0.5, 2.0); return boost::optional(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 +49,14 @@ boost::optional 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; diff --git a/src/debug/gdk-event-latency-tracker.h b/src/debug/gdk-event-latency-tracker.h index cb04ee035..5a05baf48 100644 --- a/src/debug/gdk-event-latency-tracker.h +++ b/src/debug/gdk-event-latency-tracker.h @@ -24,6 +24,7 @@ public: GdkEventLatencyTracker(); boost::optional process(GdkEvent const *e); double maxLatency() const { return max_latency; } + double getSkew(); static GdkEventLatencyTracker &default_tracker(); @@ -34,6 +35,8 @@ private: double start_seconds; double max_latency; double skew; + double last_elapsed; + double last_seconds; Glib::Timer elapsed; }; -- cgit v1.2.3