From 900f59dcdedb06f6f3d0de40aaacdc1995df2a07 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 3 Dec 2015 08:36:56 -0500 Subject: [PATCH] faderport: generalized blink on/off code --- libs/surfaces/faderport/faderport.cc | 41 ++++++++++++++++------------ libs/surfaces/faderport/faderport.h | 2 ++ 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); void drop_current_route (); -- 2.30.2