summaryrefslogtreecommitdiffstats
path: root/src/debug
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2008-07-27 06:22:56 +0000
committerjoncruz <joncruz@users.sourceforge.net>2008-07-27 06:22:56 +0000
commitd0ba4ee9dc1e622d0ee4fabfc657c019559e7692 (patch)
treeb059c494c710298be08d3c71a0f03b9a12914545 /src/debug
parentfix messed up scale/rotate handles (diff)
downloadinkscape-d0ba4ee9dc1e622d0ee4fabfc657c019559e7692.tar.gz
inkscape-d0ba4ee9dc1e622d0ee4fabfc657c019559e7692.zip
Add tracking of skew factor and display in warning message.
(bzr r6429)
Diffstat (limited to 'src/debug')
-rw-r--r--src/debug/gdk-event-latency-tracker.cpp14
-rw-r--r--src/debug/gdk-event-latency-tracker.h3
2 files changed, 15 insertions, 2 deletions
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<double> GdkEventLatencyTracker::process(GdkEvent const *event) {
skew = prefs_get_double_attribute_limited("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 +49,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;
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<double> 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;
};