faderport: output button is a toggle between master (or monitor) and currently used route
This commit is contained in:
parent
104ec39b50
commit
d53993fd83
@ -103,6 +103,9 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq
|
||||
|
||||
private:
|
||||
boost::shared_ptr<ARDOUR::Route> _current_route;
|
||||
boost::weak_ptr<ARDOUR::Route> pre_master_route;
|
||||
boost::weak_ptr<ARDOUR::Route> pre_monitor_route;
|
||||
|
||||
boost::shared_ptr<ARDOUR::AsyncMIDIPort> _input_port;
|
||||
boost::shared_ptr<ARDOUR::AsyncMIDIPort> _output_port;
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
*/
|
||||
|
||||
#include "ardour/async_midi_port.h"
|
||||
#include "ardour/rc_configuration.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/track.h"
|
||||
@ -91,7 +92,15 @@ FaderPort::use_master ()
|
||||
{
|
||||
boost::shared_ptr<Route> r = session->master_out();
|
||||
if (r) {
|
||||
set_current_route (r);
|
||||
if (_current_route == r) {
|
||||
r = pre_master_route.lock();
|
||||
set_current_route (r);
|
||||
button_info(Output).set_led_state (_output_port, false);
|
||||
} else {
|
||||
pre_master_route = boost::weak_ptr<Route> (_current_route);
|
||||
set_current_route (r);
|
||||
button_info(Output).set_led_state (_output_port, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -100,6 +109,14 @@ FaderPort::use_monitor ()
|
||||
{
|
||||
boost::shared_ptr<Route> r = session->monitor_out();
|
||||
if (r) {
|
||||
set_current_route (r);
|
||||
if (_current_route == r) {
|
||||
r = pre_monitor_route.lock();
|
||||
set_current_route (r);
|
||||
button_info(Output).set_led_state (_output_port, false);
|
||||
} else {
|
||||
pre_monitor_route = boost::weak_ptr<Route> (_current_route);
|
||||
set_current_route (r);
|
||||
button_info(Output).set_led_state (_output_port, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user