diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-01 18:45:43 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-01 18:45:43 -0500 |
commit | ee9524c9b66efd29f6069edd1312dc2a8d0f7db3 (patch) | |
tree | 39195a6f20acdc58c01aadfdfd0a2d1d1fab383d /libs/surfaces/faderport/faderport.cc | |
parent | fd44adfe01e1ac407d7dd21193164136daad976e (diff) |
faderport: make punch button LED indicate punch status
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 9227da1ab3..883b520c3a 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -48,6 +48,7 @@ #include "ardour/rc_configuration.h" #include "ardour/route.h" #include "ardour/session.h" +#include "ardour/session_configuration.h" #include "ardour/track.h" #include "faderport.h" @@ -581,10 +582,29 @@ FaderPort::notify_transport_state_changed () } void +FaderPort::parameter_changed (string what) +{ + if (what == "punch-in" || what == "punch-out") { + bool in = session->config.get_punch_in (); + bool out = session->config.get_punch_out (); + if (in && out) { + get_button (Punch).set_led_state (_output_port, true); + blinkers.remove (Punch); + } else if (in || out) { + blinkers.push_back (Punch); + } else { + blinkers.remove (Punch); + } + } +} + +void FaderPort::connect_session_signals() { session->RecordStateChanged.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::notify_record_state_changed, this), this); session->TransportStateChange.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::notify_transport_state_changed, this), this); + /* not session, but treat it similarly */ + session->config.ParameterChanged.connect (session_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::parameter_changed, this, _1), this); } bool |