Allow choice of direct or aux busses when subgrouping route groups. Fixes #3658.
git-svn-id: svn://localhost/ardour2/branches/3.0@8428 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
5af8917460
commit
6933d6f945
|
@ -308,7 +308,9 @@ GroupTabs::get_menu (RouteGroup* g)
|
|||
|
||||
if (g) {
|
||||
items.push_back (MenuElem (_("Edit..."), sigc::bind (sigc::mem_fun (*this, &GroupTabs::edit_group), g)));
|
||||
items.push_back (MenuElem (_("Subgroup"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g)));
|
||||
items.push_back (MenuElem (_("Subgroup using Direct Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
|
||||
items.push_back (MenuElem (_("Subgroup using Aux Bus (pre-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PreFader)));
|
||||
items.push_back (MenuElem (_("Subgroup using Aux Bus (post-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PostFader)));
|
||||
items.push_back (MenuElem (_("Collect"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g)));
|
||||
items.push_back (MenuElem (_("Remove"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g)));
|
||||
}
|
||||
|
@ -424,9 +426,9 @@ GroupTabs::edit_group (RouteGroup* g)
|
|||
}
|
||||
|
||||
void
|
||||
GroupTabs::subgroup (RouteGroup* g)
|
||||
GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
|
||||
{
|
||||
g->make_subgroup ();
|
||||
g->make_subgroup (aux, placement);
|
||||
}
|
||||
|
||||
struct CollectSorter {
|
||||
|
|
|
@ -93,7 +93,7 @@ private:
|
|||
void collect (ARDOUR::RouteGroup *);
|
||||
void set_activation (ARDOUR::RouteGroup *, bool);
|
||||
void edit_group (ARDOUR::RouteGroup *);
|
||||
void subgroup (ARDOUR::RouteGroup *);
|
||||
void subgroup (ARDOUR::RouteGroup *, bool, ARDOUR::Placement);
|
||||
void activate_all ();
|
||||
void disable_all ();
|
||||
void remove_group (ARDOUR::RouteGroup *);
|
||||
|
|
|
@ -135,7 +135,7 @@ class RouteGroup : public SessionObject
|
|||
changed();
|
||||
}
|
||||
|
||||
void make_subgroup ();
|
||||
void make_subgroup (bool, Placement);
|
||||
void destroy_subgroup ();
|
||||
|
||||
boost::shared_ptr<RouteList> route_list() { return routes; }
|
||||
|
|
|
@ -387,7 +387,7 @@ RouteGroup::audio_track_group (set<boost::shared_ptr<AudioTrack> >& ats)
|
|||
}
|
||||
|
||||
void
|
||||
RouteGroup::make_subgroup ()
|
||||
RouteGroup::make_subgroup (bool aux, Placement placement)
|
||||
{
|
||||
RouteList rl;
|
||||
uint32_t nin = 0;
|
||||
|
@ -407,7 +407,7 @@ RouteGroup::make_subgroup ()
|
|||
|
||||
try {
|
||||
/* use master bus etc. to determine default nouts */
|
||||
rl = _session.new_audio_route (false, nin, 2, 0, 1);
|
||||
rl = _session.new_audio_route (aux, nin, 2, 0, 1);
|
||||
} catch (...) {
|
||||
return;
|
||||
}
|
||||
|
@ -415,11 +415,18 @@ RouteGroup::make_subgroup ()
|
|||
subgroup_bus = rl.front();
|
||||
subgroup_bus->set_name (_name);
|
||||
|
||||
boost::shared_ptr<Bundle> bundle = subgroup_bus->input()->bundle ();
|
||||
if (aux) {
|
||||
|
||||
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
|
||||
(*i)->output()->disconnect (this);
|
||||
(*i)->output()->connect_ports_to_bundle (bundle, this);
|
||||
_session.add_internal_sends (subgroup_bus, placement, routes);
|
||||
|
||||
} else {
|
||||
|
||||
boost::shared_ptr<Bundle> bundle = subgroup_bus->input()->bundle ();
|
||||
|
||||
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
|
||||
(*i)->output()->disconnect (this);
|
||||
(*i)->output()->connect_ports_to_bundle (bundle, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user