diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 22:55:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 22:55:03 +0000 |
commit | 51625b2474e72850d19ff521d1b9f80be8b24136 (patch) | |
tree | a26983d5e3fdd437fa227ebcb0e188bc72a20e90 /libs/surfaces/mackie/route_signal.cc | |
parent | f03a87a132feb525a743de675d0439e981ab329a (diff) |
"merge" (i.e. wholesale import) 2.0-ongoing Mackie code and then fix to compile in 3.0 context
git-svn-id: svn://localhost/ardour2/branches/3.0@4315 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/route_signal.cc')
-rw-r--r-- | libs/surfaces/mackie/route_signal.cc | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/libs/surfaces/mackie/route_signal.cc b/libs/surfaces/mackie/route_signal.cc index c21d326fef..33a8908dde 100644 --- a/libs/surfaces/mackie/route_signal.cc +++ b/libs/surfaces/mackie/route_signal.cc @@ -20,37 +20,41 @@ #include <ardour/route.h> #include <ardour/track.h> #include <ardour/panner.h> -#include <ardour/types.h> #include "mackie_control_protocol.h" #include <stdexcept> using namespace Mackie; +using namespace std; void RouteSignal::connect() { + back_insert_iterator<Connections> cins = back_inserter( _connections ); + if ( _strip.has_solo() ) - _solo_changed_connection = _route.solo_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_solo_changed ), this ) ); + cins = _route.solo_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_solo_changed ), this ) ); if ( _strip.has_mute() ) - _mute_changed_connection = _route.mute_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_mute_changed ), this ) ); + cins = _route.mute_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_mute_changed ), this ) ); if ( _strip.has_gain() ) - _gain_changed_connection = _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 ) ); - _name_changed_connection = _route.NameChanged.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_name_changed ), this ) ); + cins = _route.NameChanged.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_name_changed ), this ) ); - if ( _route.panner().npanners() == 1 ) + cins = _route.panner().Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this, true ) ); + for ( unsigned int i = 0; i < _route.panner().npanners(); ++i ) { - _panner_changed_connection = _route.panner().pan_control(0)->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this ) ); + cins = _route.panner().streampanner (i).Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_panner_changed ), this, true ) ); } try { - _record_enable_changed_connection = - dynamic_cast<ARDOUR::Track&>( _route ).rec_enable_control()->Changed - .connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_record_enable_changed ), this ) ) + cins = dynamic_cast<ARDOUR::Track&>( _route ) + .rec_enable_control() + ->Changed + .connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_record_enable_changed ), this ) ) ; } catch ( std::bad_cast & ) @@ -59,24 +63,28 @@ void RouteSignal::connect() // with can't be record-enabled } + // TODO this works when a currently-banked route is made inactive, but not + // when a route is activated which should be currently banked. + cins = _route.active_changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_active_changed ), this ) ); + // TODO - // active_changed // SelectedChanged // RemoteControlIDChanged. Better handled at Session level. } void RouteSignal::disconnect() { - _solo_changed_connection.disconnect(); - _mute_changed_connection.disconnect(); - _gain_changed_connection.disconnect(); - _name_changed_connection.disconnect(); - _panner_changed_connection.disconnect(); - _record_enable_changed_connection.disconnect(); + for ( Connections::iterator it = _connections.begin(); it != _connections.end(); ++it ) + { + it->disconnect(); + } } void RouteSignal::notify_all() { +#ifdef DEBUG + cout << "RouteSignal::notify_all for " << _strip << endl; +#endif if ( _strip.has_solo() ) _mcp.notify_solo_changed( this ); @@ -93,4 +101,7 @@ void RouteSignal::notify_all() if ( _strip.has_recenable() ) _mcp.notify_record_enable_changed( this ); +#ifdef DEBUG + cout << "RouteSignal::notify_all finish" << endl; +#endif } |