summaryrefslogtreecommitdiff
path: root/libs/surfaces/faderport/faderport.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-12-01 18:45:43 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-12-01 18:45:43 -0500
commitee9524c9b66efd29f6069edd1312dc2a8d0f7db3 (patch)
tree39195a6f20acdc58c01aadfdfd0a2d1d1fab383d /libs/surfaces/faderport/faderport.cc
parentfd44adfe01e1ac407d7dd21193164136daad976e (diff)
faderport: make punch button LED indicate punch status
Diffstat (limited to 'libs/surfaces/faderport/faderport.cc')
-rw-r--r--libs/surfaces/faderport/faderport.cc20
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