X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fcontrol_protocol_manager.cc;h=b510bd5aa7da6220a36765ea74b7ce36c93fb6e6;hb=d0307e10c9364882c868e2c1586e64d37996315b;hp=2f4b187fec0f9f15cf36e293dcf645ed0823d942;hpb=18db6e3f508cb124b8fb034d335a24afb4935ca3;p=ardour.git diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index 2f4b187fec..b510bd5aa7 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -32,7 +32,8 @@ #include "ardour/control_protocol_manager.h" #include "ardour/search_paths.h" - +#include "ardour/selection.h" +#include "ardour/session.h" using namespace ARDOUR; using namespace std; @@ -87,8 +88,25 @@ ControlProtocolManager::set_session (Session* s) SessionHandlePtr::set_session (s); if (_session) { + + /* get selection info and set it before instantiating any + * control protocols. + */ + + CoreSelection::StripableAutomationControls sac; + _session->selection().get_stripables (sac); + + for (CoreSelection::StripableAutomationControls::iterator i = sac.begin(); i != sac.end(); ++i) { + if ((*i).stripable) { + cerr << "First selected being set to " << (*i).stripable->name() << endl; + ControlProtocol::set_first_selected_stripable ((*i).stripable); + break; + } + } + Glib::Threads::RWLock::ReaderLock lm (protocols_lock); + for (list::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) { if ((*i)->requested || (*i)->mandatory) { (void) activate (**i);