diff options
Diffstat (limited to 'libs/surfaces/mackie/mackie_control_protocol.cc')
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index fb7d30b107..caf0172558 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -293,7 +293,7 @@ void MackieControlProtocol::switch_banks( int initial ) cout << "remote id " << route->remote_control_id() << " connecting " << route->name() << " to " << strip.name() << " with port " << port_for_id(i) << endl; #endif route_table[i] = route; - RouteSignal * rs = new RouteSignal( *route, *this, strip, port_for_id(i) ); + RouteSignal * rs = new RouteSignal (route, *this, strip, port_for_id(i) ); route_signals.push_back( rs ); // update strip from route rs->notify_all(); @@ -658,7 +658,8 @@ void MackieControlProtocol::create_ports() shared_ptr<Route> MackieControlProtocol::master_route() { - return session->master_out (); + boost::shared_ptr<IO> mo = session->master_out (); + return boost::dynamic_pointer_cast<Route>(mo); } Strip & MackieControlProtocol::master_strip() @@ -962,7 +963,7 @@ void MackieControlProtocol::notify_solo_changed( RouteSignal * route_signal ) try { Button & button = route_signal->strip().solo(); - route_signal->port().write( builder.build_led( button, route_signal->route().soloed() ) ); + route_signal->port().write( builder.build_led( button, route_signal->route()->soloed() ) ); } catch( exception & e ) { @@ -975,7 +976,7 @@ void MackieControlProtocol::notify_mute_changed( RouteSignal * route_signal ) try { Button & button = route_signal->strip().mute(); - route_signal->port().write( builder.build_led( button, route_signal->route().muted() ) ); + route_signal->port().write( builder.build_led( button, route_signal->route()->muted() ) ); } catch( exception & e ) { @@ -988,7 +989,7 @@ void MackieControlProtocol::notify_record_enable_changed( RouteSignal * route_si try { Button & button = route_signal->strip().recenable(); - route_signal->port().write( builder.build_led( button, route_signal->route().record_enabled() ) ); + route_signal->port().write( builder.build_led( button, route_signal->route()->record_enabled() ) ); } catch( exception & e ) { @@ -1018,7 +1019,7 @@ void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal, boo Fader & fader = route_signal->strip().gain(); if ( !fader.in_use() ) { - float gain_value = route_signal->route().gain_control().get_value(); + float gain_value = route_signal->route()->gain_control().get_value(); // check that something has actually changed if ( force_update || gain_value != route_signal->last_gain_written() ) { @@ -1041,7 +1042,7 @@ void MackieControlProtocol::notify_name_changed( void *, RouteSignal * route_sig if ( !strip.is_master() ) { string line1; - string fullname = route_signal->route().name(); + string fullname = route_signal->route()->name(); if ( fullname.length() <= 6 ) { @@ -1068,11 +1069,11 @@ void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal, b try { Pot & pot = route_signal->strip().vpot(); - const Panner & panner = route_signal->route().panner(); + const Panner & panner = route_signal->route()->panner(); if ( panner.size() == 1 || ( panner.size() == 2 && panner.linked() ) ) { float pos; - route_signal->route().panner()[0]->get_effective_position( pos ); + route_signal->route()->panner()[0]->get_effective_position( pos ); // cache the MidiByteArray here, because the mackie led control is much lower // resolution than the panner control. So we save lots of byte @@ -1099,13 +1100,13 @@ void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal, b // TODO handle plugin automation polling void MackieControlProtocol::update_automation( RouteSignal & rs ) { - ARDOUR::AutoState gain_state = rs.route().gain_automation_state(); + ARDOUR::AutoState gain_state = rs.route()->gain_automation_state(); if ( gain_state == Touch || gain_state == Play ) { notify_gain_changed( &rs, false ); } - ARDOUR::AutoState panner_state = rs.route().panner().automation_state(); + ARDOUR::AutoState panner_state = rs.route()->panner().automation_state(); if ( panner_state == Touch || panner_state == Play ) { notify_panner_changed( &rs, false ); |