treat VCA assign as a RouteGroup property.
Newly added routes,removed routes etc. all correctly assign or unassign to the group's VCA.
This commit is contained in:
parent
da0bd3d8a5
commit
2cc33684c7
@ -150,6 +150,7 @@ class LIBARDOUR_API RouteGroup : public SessionObject
|
||||
private:
|
||||
boost::shared_ptr<RouteList> routes;
|
||||
boost::shared_ptr<Route> subgroup_bus;
|
||||
boost::weak_ptr<VCA> group_master;
|
||||
|
||||
PBD::Property<bool> _relative;
|
||||
PBD::Property<bool> _active;
|
||||
|
@ -126,12 +126,18 @@ RouteGroup::~RouteGroup ()
|
||||
_rec_enable_group->clear ();
|
||||
_monitoring_group->clear ();
|
||||
|
||||
boost::shared_ptr<VCA> vca (group_master.lock());
|
||||
|
||||
for (RouteList::iterator i = routes->begin(); i != routes->end();) {
|
||||
RouteList::iterator tmp = i;
|
||||
++tmp;
|
||||
|
||||
(*i)->set_route_group (0);
|
||||
|
||||
if (vca) {
|
||||
(*i)->unassign (vca);
|
||||
}
|
||||
|
||||
i = tmp;
|
||||
}
|
||||
}
|
||||
@ -164,6 +170,12 @@ RouteGroup::add (boost::shared_ptr<Route> r)
|
||||
r->set_route_group (this);
|
||||
r->DropReferences.connect_same_thread (*this, boost::bind (&RouteGroup::remove_when_going_away, this, boost::weak_ptr<Route> (r)));
|
||||
|
||||
boost::shared_ptr<VCA> vca (group_master.lock());
|
||||
|
||||
if (vca) {
|
||||
r->assign (vca);
|
||||
}
|
||||
|
||||
_session.set_dirty ();
|
||||
RouteAdded (this, boost::weak_ptr<Route> (r)); /* EMIT SIGNAL */
|
||||
return 0;
|
||||
@ -186,6 +198,13 @@ RouteGroup::remove (boost::shared_ptr<Route> r)
|
||||
|
||||
if ((i = find (routes->begin(), routes->end(), r)) != routes->end()) {
|
||||
r->set_route_group (0);
|
||||
|
||||
boost::shared_ptr<VCA> vca = group_master.lock();
|
||||
|
||||
if (vca) {
|
||||
r->unassign (vca);
|
||||
}
|
||||
|
||||
_solo_group->remove_control (r->solo_control());
|
||||
_mute_group->remove_control (r->mute_control());
|
||||
_gain_group->remove_control (r->gain_control());
|
||||
@ -584,6 +603,8 @@ RouteGroup::assign_master (boost::shared_ptr<VCA> master)
|
||||
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
|
||||
(*r)->assign (master);
|
||||
}
|
||||
|
||||
group_master = master;
|
||||
}
|
||||
|
||||
void
|
||||
@ -602,6 +623,8 @@ RouteGroup::unassign_master (boost::shared_ptr<VCA> master)
|
||||
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
|
||||
(*r)->unassign (master);
|
||||
}
|
||||
|
||||
group_master.reset ();
|
||||
}
|
||||
|
||||
bool
|
||||
|
Loading…
Reference in New Issue
Block a user