summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-02-07 17:14:40 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-02-07 17:14:40 +0000
commita9d331aa980cde9464ddd1113a7a29447f52768e (patch)
treea37d62520686a47fcc850ca3ae05e36c1853bd62 /libs
parenteb012ac243854806b1268bef0185f0f906e0b2ac (diff)
add back some missing logic to can-replicate
git-svn-id: svn://localhost/ardour2/branches/3.0@8743 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/plugin_insert.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 74cd20644a..8a5919ab5a 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -621,7 +621,7 @@ PluginInsert::can_support_io_configuration (const ChanCount& in, ChanCount& out)
// See if replication is possible
// We allow replication only for plugins with either zero or 1 inputs and outputs
// for every valid data type.
- uint32_t f = 1;
+ uint32_t f = 0;
bool can_replicate = true;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
// No inputs of this type
@@ -633,6 +633,18 @@ PluginInsert::can_support_io_configuration (const ChanCount& in, ChanCount& out)
can_replicate = false;
break;
}
+
+ // Potential factor not set yet
+
+ if (f == 0) {
+ f = in.get(*t) / inputs.get(*t);;
+ }
+
+ // Factor for this type does not match another type, can not replicate
+ if (f != (in.get(*t) / inputs.get(*t))) {
+ can_replicate = false;
+ break;
+ }
}
if (can_replicate) {