diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-15 17:39:24 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-15 17:47:02 +0200 |
commit | a51ea6cf2ea9c5958fd1cfa088a4b292a0552a5b (patch) | |
tree | 0665b40b2ba52e35707abfe12b82e68f83122269 /libs/ardour/route_group.cc | |
parent | b00d75adf63db155ef2873bd9d259dc8ca256be6 (diff) |
fix crash when creating subgroup-bus - fixes #6642
the actual issues is in the connection management:
bundle.cc:323: void ARDOUR::Bundle::connect(): Assertion `N == other->nchannels().n_total()' failed.
That could be resolved. However, combining tracks without panners will
almost never do what the user really wants, so this case has been
disabled for now.
Diffstat (limited to 'libs/ardour/route_group.cc')
-rw-r--r-- | libs/ardour/route_group.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 032c85f6ce..036aede02e 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -456,18 +456,26 @@ RouteGroup::make_subgroup (bool aux, Placement placement) for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { if ((*i)->output()->n_ports().n_midi() != 0) { - PBD::info << _("You cannot subgroup MIDI tracks at this time") << endmsg; + PBD::warning << _("You cannot subgroup MIDI tracks at this time") << endmsg; return; } } for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { + if (!aux && nin != 0 && nin != (*i)->output()->n_ports().n_audio()) { + PBD::warning << _("You cannot subgroup tracks with different number of outputs at this time.") << endmsg; + return; + } 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); + /* use master bus etc. to determine default nouts. + * + * (since tracks can't have fewer outs than ins, + * "nin" currently defines the number of outpus if nin > 2) + */ + rl = _session.new_audio_route (nin, 2 /*XXX*/, 0, 1); } catch (...) { return; } |