X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Froute_group_member.cc;h=9ca94bfb2bc4851383e6269a43ff82bd70f5d1bd;hb=1ec78d26ee7cd5a612a7f98f9977dbb8ef46a593;hp=3caa7cd1d0e8fc1db39639769ae4ddc8d4506e46;hpb=8c9749e42faf7808034ed8b7afce4a2fe6dc6f33;p=ardour.git diff --git a/libs/ardour/route_group_member.cc b/libs/ardour/route_group_member.cc index 3caa7cd1d0..9ca94bfb2b 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) && + _route_group && + ((active_for_predicate && (gcd != PBD::Controllable::InverseGroup)) || + (!active_for_predicate && (gcd == PBD::Controllable::InverseGroup))); +}