summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-12-03 08:36:56 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-12-03 08:36:56 -0500
commit900f59dcdedb06f6f3d0de40aaacdc1995df2a07 (patch)
tree3169d3ac2a667bfddccde663ae3538b7427c3e5d
parent0a54d284540e131b31a1fbbaebe96aa4fcb13136 (diff)
faderport: generalized blink on/off code
-rw-r--r--libs/surfaces/faderport/faderport.cc41
-rw-r--r--libs/surfaces/faderport/faderport.h2
2 files changed, 26 insertions, 17 deletions
diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc
index 56d2b9a52f..357823edf5 100644
--- a/libs/surfaces/faderport/faderport.cc
+++ b/libs/surfaces/faderport/faderport.cc
@@ -533,6 +533,20 @@ FaderPort::set_active (bool yn)
return 0;
}
+void
+FaderPort::stop_blinking (ButtonID id)
+{
+ blinkers.remove (id);
+ get_button (id).set_led_state (_output_port, false);
+}
+
+void
+FaderPort::start_blinking (ButtonID id)
+{
+ blinkers.push_back (id);
+ get_button (id).set_led_state (_output_port, true);
+}
+
bool
FaderPort::blink ()
{
@@ -567,16 +581,13 @@ FaderPort::notify_record_state_changed ()
{
switch (session->record_status()) {
case Session::Disabled:
- get_button (RecEnable).set_led_state (_output_port, false);
- blinkers.remove (RecEnable);
+ stop_blinking (RecEnable);
break;
case Session::Enabled:
- get_button (RecEnable).set_led_state (_output_port, true);
- blinkers.push_back (RecEnable);
+ start_blinking (RecEnable);
break;
case Session::Recording:
- get_button (RecEnable).set_led_state (_output_port, true);
- blinkers.remove (RecEnable);
+ stop_blinking (RecEnable);
break;
}
}
@@ -601,10 +612,9 @@ FaderPort::parameter_changed (string what)
get_button (Punch).set_led_state (_output_port, true);
blinkers.remove (Punch);
} else if (in || out) {
- blinkers.push_back (Punch);
+ start_blinking (Punch);
} else {
- blinkers.remove (Punch);
- get_button (Punch).set_led_state (_output_port, false);
+ stop_blinking (Punch);
}
}
}
@@ -1086,14 +1096,13 @@ FaderPort::map_cut ()
if (mp) {
bool yn = mp->cut_all ();
- get_button (Mute).set_led_state (_output_port, yn);
if (yn) {
- blinkers.push_back (Mute);
+ start_blinking (Mute);
} else {
- blinkers.remove (Mute);
+ stop_blinking (Mute);
}
} else {
- blinkers.remove (Mute);
+ stop_blinking (Mute);
}
}
@@ -1180,11 +1189,9 @@ void
FaderPort::map_route_state ()
{
if (!_current_route) {
- get_button (Mute).set_led_state (_output_port, false);
- get_button (Solo).set_led_state (_output_port, false);
+ stop_blinking (Mute);
+ stop_blinking (Solo);
get_button (Rec).set_led_state (_output_port, false);
- blinkers.remove (Mute);
- blinkers.remove (Solo);
} else {
/* arguments to these map_*() methods are all ignored */
map_mute (0);
diff --git a/libs/surfaces/faderport/faderport.h b/libs/surfaces/faderport/faderport.h
index 0988637fbe..0fac479c07 100644
--- a/libs/surfaces/faderport/faderport.h
+++ b/libs/surfaces/faderport/faderport.h
@@ -279,6 +279,8 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq
Blinkers blinkers;
bool blink_state;
bool blink ();
+ void start_blinking (ButtonID);
+ void stop_blinking (ButtonID);
void set_current_route (boost::shared_ptr<ARDOUR::Route>);
void drop_current_route ();