X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fidle_adjustment.cc;h=6f5fd132947f2bcb08ae1943276f14a9946ee333;hb=937a175898b349ee6f6b87db07d2865012b9cf3a;hp=f74a3a97012e0958fbaac35eb3d1d55850c2856c;hpb=b8c369fe2d183fafffad237ef79fc36a59bad17e;p=ardour.git diff --git a/libs/gtkmm2ext/idle_adjustment.cc b/libs/gtkmm2ext/idle_adjustment.cc index f74a3a9701..6f5fd13294 100644 --- a/libs/gtkmm2ext/idle_adjustment.cc +++ b/libs/gtkmm2ext/idle_adjustment.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ #define _BSD_SOURCE #include #include +#include #include #include "pbd/timersub.h" @@ -32,7 +33,7 @@ IdleAdjustment::IdleAdjustment (Gtk::Adjustment& adj) { adj.signal_value_changed().connect (mem_fun (*this, &IdleAdjustment::underlying_adjustment_value_changed)); timeout_queued = 0; - gettimeofday (&last_vc, 0); + last_vc = g_get_monotonic_time(); } IdleAdjustment::~IdleAdjustment () @@ -42,29 +43,26 @@ IdleAdjustment::~IdleAdjustment () void IdleAdjustment::underlying_adjustment_value_changed () { - gettimeofday (&last_vc, 0); - + last_vc = g_get_monotonic_time(); + if (timeout_queued) { return; } Glib::signal_timeout().connect(mem_fun(*this, &IdleAdjustment::timeout_handler), 250); timeout_queued = true; -} +} gint IdleAdjustment::timeout_handler () { - struct timeval now; - struct timeval tdiff; - - gettimeofday (&now, 0); - - timersub (&now, &last_vc, &tdiff); + int64_t now, tdiff; + now = g_get_monotonic_time(); + tdiff = now - last_vc; - std::cerr << "timer elapsed, diff = " << tdiff.tv_sec << " + " << tdiff.tv_usec << std::endl; + std::cerr << "timer elapsed, diff = " << tdiff << " usec" << std::endl; - if (tdiff.tv_sec > 0 || tdiff.tv_usec > 250000) { + if (tdiff > 250000) { std::cerr << "send signal\n"; value_changed (); timeout_queued = false;