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:
Carl Hetherington 2011-01-04 02:36:29 +00:00
parent 5af8917460
commit 6933d6f945
4 changed files with 20 additions and 11 deletions

View File

@ -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 {

View File

@ -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 *);

View File

@ -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; }

View File

@ -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);
}
}
}