diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-06-25 20:46:39 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-06-25 20:46:39 +0000 |
commit | 8e7a5d77414a40550a28d61abf6eeb1e89a1ec25 (patch) | |
tree | 76d5851fe7221066ccadbc032a9a1fbcd1b6091b /libs/ardour/route_group.cc | |
parent | 94880f7cd1417031387b485e279c32eea885cf6d (diff) |
startup assistant patch from tinman; cleanup fix backported from 2.X ; easy(ier) ways to create aux sends ; facility to subgroup (route via bus) for a route group ; fix up internal send/return operation ; fix internal send naming since it doesn't need to be unique - no JACK ports involved
git-svn-id: svn://localhost/ardour2/branches/3.0@5272 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/route_group.cc')
-rw-r--r-- | libs/ardour/route_group.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 3da55adeb7..826341092f 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -218,3 +218,46 @@ RouteGroup::audio_track_group (set<AudioTrack*>& ats) } } +void +RouteGroup::make_subgroup () +{ + RouteList rl; + uint32_t nin = 0; + + for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) { + nin = max (nin, (*i)->output()->n_ports().n_audio()); + } + + try { + /* use master bus etc. to determine default nouts */ + rl = _session.new_audio_route (nin, 2, 0, 1); + } catch (...) { + return; + } + + subgroup_bus = rl.front(); + subgroup_bus->set_name (_name); + + boost::shared_ptr<Bundle> bundle = subgroup_bus->input()->bundle (); + + for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) { + (*i)->output()->disconnect (this); + (*i)->output()->connect_ports_to_bundle (bundle, this); + } +} + +void +RouteGroup::destroy_subgroup () +{ + if (!subgroup_bus) { + return; + } + + for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) { + (*i)->output()->disconnect (this); + /* XXX find a new bundle to connect to */ + } + + _session.remove_route (subgroup_bus); + subgroup_bus.reset (); +} |