X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsession_rtevents.cc;h=00d966acaae62d4c92cc006a1c4b6d1123969127;hb=d92686afb4105b84b014372b6feb0ccc454a5171;hp=67249d48b9482d0f0751bf0f1c94512e578f2864;hpb=653ae4acd639fef149314fe6f8c7a0d862afae40;p=ardour.git diff --git a/libs/ardour/session_rtevents.cc b/libs/ardour/session_rtevents.cc index 67249d48b9..00d966acaa 100644 --- a/libs/ardour/session_rtevents.cc +++ b/libs/ardour/session_rtevents.cc @@ -25,8 +25,9 @@ #include "ardour/route.h" #include "ardour/session.h" #include "ardour/track.h" +#include "ardour/vca_manager.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace PBD; @@ -36,13 +37,25 @@ using namespace Glib; void Session::set_controls (boost::shared_ptr cl, double val, Controllable::GroupControlDisposition gcd) { - std::cerr << "Session::set_controls called on " << cl->size() << " controls, group = " << enum_2_string (gcd) << std::endl; + if (cl->empty()) { + return; + } + + for (ControlList::iterator ci = cl->begin(); ci != cl->end(); ++ci) { + /* as of july 2017 this is a no-op for everything except record enable */ + (*ci)->do_pre_realtime_queue_stuff (val); + } + queue_event (get_rt_event (cl, val, gcd)); } void Session::set_control (boost::shared_ptr ac, double val, Controllable::GroupControlDisposition gcd) { + if (!ac) { + return; + } + boost::shared_ptr cl (new ControlList); cl->push_back (ac); set_controls (cl, val, gcd); @@ -71,6 +84,9 @@ Session::rt_clear_all_solo_state (boost::shared_ptr rl, bool /* yn */ } (*i)->clear_all_solo_state(); } + + _vca_manager->clear_all_solo_state (); + set_dirty(); }