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;
}
}
+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;