diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-11-25 17:56:22 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-11-25 17:56:22 -0500 |
commit | e1794ae678a5fa8bb55c6e2b5fb48620eaf43904 (patch) | |
tree | 2bba7331c9f3b7d774df4d3c5421baf514e606ab /libs/surfaces | |
parent | 2f8cc0718ab52053466674dc1e212000f23d6fcb (diff) |
faderport: simpler logic for master/monitor/other
When choosing master or monitor, do NOT save master or monitor as the pre_{master,monitor}_route under
any circumstances. This means that master/monitor choices do not stack, and just switch between them.
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/faderport/faderport.cc | 5 | ||||
-rw-r--r-- | libs/surfaces/faderport/operations.cc | 23 |
2 files changed, 14 insertions, 14 deletions
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<Route> 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<Route> (_current_route); + if (_current_route != session->master_out() && _current_route != session->monitor_out()) { + pre_master_route = boost::weak_ptr<Route> (_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<Route> (_current_route); + if (_current_route != session->master_out() && _current_route != session->monitor_out()) { + pre_monitor_route = boost::weak_ptr<Route> (_current_route); + } set_current_route (r); button_info(Output).set_led_state (_output_port, true); blinkers.push_back (Output); |