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;
_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;
}
}
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;
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());
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
(*r)->assign (master);
}
+
+ group_master = master;
}
void
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
(*r)->unassign (master);
}
+
+ group_master.reset ();
}
bool