summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-11-25 17:56:22 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-11-25 17:56:22 -0500
commite1794ae678a5fa8bb55c6e2b5fb48620eaf43904 (patch)
tree2bba7331c9f3b7d774df4d3c5421baf514e606ab /libs/surfaces
parent2f8cc0718ab52053466674dc1e212000f23d6fcb (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.cc5
-rw-r--r--libs/surfaces/faderport/operations.cc23
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);