diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 381f893174..a8f8938069 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -769,6 +769,11 @@ FaderPort::set_current_route (boost::shared_ptr r) _current_route = r; + /* turn this off. It will be turned on back on in use_master() or + use_monitor() as appropriate. + */ + button_info(Output).set_led_state (_output_port, false); + if (_current_route) { _current_route->DropReferences.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::drop_current_route, this), this); diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc index b25e449f56..3c4d27a345 100644 --- a/libs/surfaces/faderport/operations.cc +++ b/libs/surfaces/faderport/operations.cc @@ -102,15 +102,12 @@ FaderPort::use_master () if (_current_route == r) { r = pre_master_route.lock(); set_current_route (r); - if (r == session->monitor_out()) { - button_info(Output).set_led_state (_output_port, true); - blinkers.push_back (Output); - } else { - button_info(Output).set_led_state (_output_port, false); - blinkers.remove (Output); - } + button_info(Output).set_led_state (_output_port, false); + blinkers.remove (Output); } else { - pre_master_route = boost::weak_ptr (_current_route); + if (_current_route != session->master_out() && _current_route != session->monitor_out()) { + pre_master_route = boost::weak_ptr (_current_route); + } set_current_route (r); button_info(Output).set_led_state (_output_port, true); blinkers.remove (Output); @@ -127,14 +124,12 @@ FaderPort::use_monitor () if (_current_route == r) { r = pre_monitor_route.lock(); set_current_route (r); - if (r == session->master_out()) { - button_info(Output).set_led_state (_output_port, true); - } else { - button_info(Output).set_led_state (_output_port, false); - } + button_info(Output).set_led_state (_output_port, false); blinkers.remove (Output); } else { - pre_monitor_route = boost::weak_ptr (_current_route); + if (_current_route != session->master_out() && _current_route != session->monitor_out()) { + pre_monitor_route = boost::weak_ptr (_current_route); + } set_current_route (r); button_info(Output).set_led_state (_output_port, true); blinkers.push_back (Output);