fix issues with route group assignment to control master
This commit is contained in:
parent
637379d7a2
commit
b5869ac0a4
@ -145,6 +145,7 @@ class LIBARDOUR_API RouteGroup : public SessionObject
|
|||||||
|
|
||||||
void assign_master (boost::shared_ptr<VCA>);
|
void assign_master (boost::shared_ptr<VCA>);
|
||||||
void unassign_master (boost::shared_ptr<VCA>);
|
void unassign_master (boost::shared_ptr<VCA>);
|
||||||
|
bool slaved () const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
boost::shared_ptr<RouteList> routes;
|
boost::shared_ptr<RouteList> routes;
|
||||||
|
@ -562,6 +562,10 @@ RouteGroup::push_to_groups ()
|
|||||||
void
|
void
|
||||||
RouteGroup::assign_master (boost::shared_ptr<VCA> master)
|
RouteGroup::assign_master (boost::shared_ptr<VCA> master)
|
||||||
{
|
{
|
||||||
|
if (!routes || routes->empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boost::shared_ptr<Route> front = routes->front ();
|
boost::shared_ptr<Route> front = routes->front ();
|
||||||
|
|
||||||
if (!front) {
|
if (!front) {
|
||||||
@ -572,16 +576,20 @@ RouteGroup::assign_master (boost::shared_ptr<VCA> master)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!front->slaved()) {
|
bool cancel_master_controls = false;
|
||||||
|
|
||||||
|
if (!front->slaved()) {
|
||||||
pre_master_gain = is_gain ();
|
pre_master_gain = is_gain ();
|
||||||
pre_master_solo = is_solo ();
|
pre_master_solo = is_solo ();
|
||||||
pre_master_mute = is_mute ();
|
pre_master_mute = is_mute ();
|
||||||
|
cancel_master_controls = true;
|
||||||
|
}
|
||||||
|
|
||||||
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
|
for (RouteList::iterator r = routes->begin(); r != routes->end(); ++r) {
|
||||||
(*r)->assign (master);
|
(*r)->assign (master);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cancel_master_controls) {
|
||||||
set_gain (false);
|
set_gain (false);
|
||||||
set_solo (false);
|
set_solo (false);
|
||||||
set_mute (false);
|
set_mute (false);
|
||||||
@ -591,6 +599,10 @@ RouteGroup::assign_master (boost::shared_ptr<VCA> master)
|
|||||||
void
|
void
|
||||||
RouteGroup::unassign_master (boost::shared_ptr<VCA> master)
|
RouteGroup::unassign_master (boost::shared_ptr<VCA> master)
|
||||||
{
|
{
|
||||||
|
if (!routes || routes->empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boost::shared_ptr<Route> front = routes->front ();
|
boost::shared_ptr<Route> front = routes->front ();
|
||||||
|
|
||||||
if (!front) {
|
if (!front) {
|
||||||
@ -611,3 +623,13 @@ RouteGroup::unassign_master (boost::shared_ptr<VCA> master)
|
|||||||
set_mute (pre_master_mute);
|
set_mute (pre_master_mute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
RouteGroup::slaved () const
|
||||||
|
{
|
||||||
|
if (!routes || routes->empty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return routes->front()->slaved ();
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user