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 | |
parent | fd44adfe01e1ac407d7dd21193164136daad976e (diff) |
faderport: make punch button LED indicate punch status
-rw-r--r-- | libs/surfaces/faderport/faderport.cc | 20 | ||||
-rw-r--r-- | libs/surfaces/faderport/faderport.h | 1 |
2 files changed, 21 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 diff --git a/libs/surfaces/faderport/faderport.h b/libs/surfaces/faderport/faderport.h index f2ec81d597..c92ab38c78 100644 --- a/libs/surfaces/faderport/faderport.h +++ b/libs/surfaces/faderport/faderport.h @@ -295,6 +295,7 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq void map_recenable (); void map_gain (); void map_cut (); + void parameter_changed (std::string); /* operations (defined in operations.cc) */ |