summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2008-06-10 03:04:51 +0000
committerDoug McLain <doug@nostar.net>2008-06-10 03:04:51 +0000
commita6f6a3909cbdefd8ad108b22e726d46fddcb0fcf (patch)
tree97bbbab2cef9d79ac5d1129c303a17e4a48488db /libs
parent4614909ea6be21074ddd4a28e409922a4d024a18 (diff)
The real fix for 3450
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3451 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/route.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index b4e963ebdc..1b57962bde 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -1133,7 +1133,7 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
uint32_t send_cnt = 0;
map<Placement,list<InsertCount> > insert_map;
RedirectList::iterator prev;
- int32_t initial_streams;
+ int32_t initial_streams, previous_initial_streams = -1;
int ret = -1;
redirect_max_outs = 0;
@@ -1193,10 +1193,13 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
/* figure out the streams that will feed into PreFader */
if (!insert_map[PreFader].empty()) {
- InsertCount& ic (insert_map[PreFader].back());
- initial_streams = ic.insert->output_streams ();
- } else {
- initial_streams = n_inputs ();
+ previous_initial_streams = n_inputs ();
+ for (list<InsertCount>::iterator i = insert_map[PreFader].begin(); i != insert_map[PreFader].end(); i++) {
+ if (i->insert->can_do (previous_initial_streams, initial_streams) < 0) {
+ goto streamcount;
+ }
+ previous_initial_streams = initial_streams;
+ }
}
/* B: PostFader */