diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-14 13:28:24 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-14 13:28:31 -0500 |
commit | d59739d728870843b39901a48216fe9109be6641 (patch) | |
tree | 839d2745486bc650f2d23c5eb7dd2abfc0ef2388 /libs/surfaces/faderport/faderport.cc | |
parent | 40a352e8a1d6c4d91f06d542a2851346bc887cb6 (diff) |
faderport: add 100msec (10Hz) periodic update to facilitate automation playback
Diffstat (limited to 'libs/surfaces/faderport/faderport.cc')
-rw-r--r-- | libs/surfaces/faderport/faderport.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 46ff569c43..1f5352fdec 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -560,6 +560,10 @@ FaderPort::set_active (bool yn) blink_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::blink)); blink_timeout->attach (main_loop()->get_context()); + Glib::RefPtr<Glib::TimeoutSource> periodic_timeout = Glib::TimeoutSource::create (100); // milliseconds + periodic_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::periodic)); + periodic_timeout->attach (main_loop()->get_context()); + } else { BaseUI::quit (); @@ -574,6 +578,22 @@ FaderPort::set_active (bool yn) return 0; } +bool +FaderPort::periodic () +{ + if (!_current_route) { + return true; + } + + ARDOUR::AutoState gain_state = _current_route->gain_control()->automation_state(); + + if (gain_state == ARDOUR::Touch || gain_state == ARDOUR::Play) { + map_gain (); + } + + return true; +} + void FaderPort::stop_blinking (ButtonID id) { |