X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=blobdiff_plain;f=libs%2Fardour%2Froute_group_member.cc;h=280d193fba1d90dc11b3cff20b18c878529aa2ff;hp=3caa7cd1d0e8fc1db39639769ae4ddc8d4506e46;hb=c8c6bca6587450ff64303dbc994a4cd28d6ce7aa;hpb=2b9421fd391efcddde0be3397cb66e19b744a155 diff --git a/libs/ardour/route_group_member.cc b/libs/ardour/route_group_member.cc index 3caa7cd1d0..280d193fba 100644 --- a/libs/ardour/route_group_member.cc +++ b/libs/ardour/route_group_member.cc @@ -18,6 +18,7 @@ #include "ardour/libardour_visibility.h" #include "ardour/route_group_member.h" +#include "ardour/route_group.h" using namespace ARDOUR; @@ -34,3 +35,14 @@ RouteGroupMember::set_route_group (RouteGroup *rg) _route_group = rg; route_group_changed (); /* EMIT SIGNAL */ } + +bool +RouteGroupMember::use_group (PBD::Controllable::GroupControlDisposition gcd, bool (RouteGroup::*predicate)(void) const) const +{ + bool active_for_predicate = _route_group && (_route_group->*predicate)() && _route_group->is_active(); + + return ((gcd != PBD::Controllable::NoGroup) && (gcd != PBD::Controllable::ForGroup)) && + _route_group && + ((active_for_predicate && (gcd != PBD::Controllable::InverseGroup)) || + (!active_for_predicate && (gcd == PBD::Controllable::InverseGroup))); +}