diff options
author | John Anderson <ardour@semiosix.com> | 2007-09-18 19:14:13 +0000 |
---|---|---|
committer | John Anderson <ardour@semiosix.com> | 2007-09-18 19:14:13 +0000 |
commit | 4cd658f4e55dbdea73dc9f2680e6904f9ed934dc (patch) | |
tree | 3cb5696a65f22bf42dd8e8e2a364b746e8c42a90 | |
parent | 7d2f8306fcf8ea6cd4faffbc5c6b38e43d7e8bd4 (diff) |
Code to prevent unnecessary automation midi transmits was preventing updates on bank switches. This fixes it.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2469 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 12 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.h | 4 | ||||
-rw-r--r-- | libs/surfaces/mackie/route_signal.cc | 6 |
3 files changed, 11 insertions, 11 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 6cd5a96761..22cae963d5 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -954,7 +954,7 @@ void MackieControlProtocol::notify_record_enable_changed( RouteSignal * route_si } } -void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal ) +void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal, bool force_update ) { try { @@ -963,7 +963,7 @@ void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal ) { float gain_value = route_signal->route().gain_control().get_value(); // check that something has actually changed - if ( gain_value != route_signal->last_gain_written() ) + if ( force_update || gain_value != route_signal->last_gain_written() ) { route_signal->port().write( builder.build_fader( fader, gain_value ) ); route_signal->last_gain_written( gain_value ); @@ -1006,7 +1006,7 @@ void MackieControlProtocol::notify_name_changed( void *, RouteSignal * route_sig } } -void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal ) +void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal, bool force_update ) { try { @@ -1022,7 +1022,7 @@ void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal ) // sends in spite of more work on the comparison MidiByteArray bytes = builder.build_led_ring( pot, ControlState( on, pos ), MackieMidiBuilder::midi_pot_mode_dot ); // check that something has actually changed - if ( bytes != route_signal->last_pan_written() ) + if ( force_update || bytes != route_signal->last_pan_written() ) { route_signal->port().write( bytes ); route_signal->last_pan_written( bytes ); @@ -1045,13 +1045,13 @@ void MackieControlProtocol::update_automation( RouteSignal & rs ) ARDOUR::AutoState gain_state = rs.route().gain_automation_state(); if ( gain_state == Touch || gain_state == Play ) { - notify_gain_changed( &rs ); + notify_gain_changed( &rs, false ); } ARDOUR::AutoState panner_state = rs.route().panner().automation_state(); if ( panner_state == Touch || panner_state == Play ) { - notify_panner_changed( &rs ); + notify_panner_changed( &rs, false ); } _automation_last.start(); } diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index d3ebc77676..dd81213b33 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -95,11 +95,11 @@ class MackieControlProtocol /// Signal handler for Route::record_enable_changed void notify_record_enable_changed( Mackie::RouteSignal * ); /// Signal handler for Route::gain_changed ( from IO ) - void notify_gain_changed( Mackie::RouteSignal * ); + void notify_gain_changed( Mackie::RouteSignal *, bool force_update = true ); /// Signal handler for Route::name_change void notify_name_changed( void *, Mackie::RouteSignal * ); /// Signal handler from Panner::Change - void notify_panner_changed( Mackie::RouteSignal * ); + void notify_panner_changed( Mackie::RouteSignal *, bool force_update = true ); /// Signal handler for new routes added void notify_route_added( ARDOUR::Session::RouteList & ); diff --git a/libs/surfaces/mackie/route_signal.cc b/libs/surfaces/mackie/route_signal.cc index b3922770a0..832a8843a8 100644 --- a/libs/surfaces/mackie/route_signal.cc +++ b/libs/surfaces/mackie/route_signal.cc @@ -39,14 +39,14 @@ void RouteSignal::connect() cins = _route.mute_control().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_mute_changed ), this ) ); if ( _strip.has_gain() ) - cins = _route.gain_control().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_gain_changed ), this ) ); + cins = _route.gain_control().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_gain_changed ), this, true ) ); cins = _route.name_changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_name_changed ), this ) ); - cins = _route.panner().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this ) ); + cins = _route.panner().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this, true ) ); for ( unsigned int i = 0; i < _route.panner().size(); ++i ) { - cins = _route.panner()[i]->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this ) ); + cins = _route.panner()[i]->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this, true ) ); } try |