13
0

special case MB channelstrip

This commit is contained in:
Robin Gareus 2016-04-04 18:58:05 +02:00
parent d324f5bb9e
commit d3447dfd15

View File

@ -1368,8 +1368,6 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
return Match (Replicate, f, _strict_io);
}
break;
case Split:
break;
default:
break;
}
@ -1382,6 +1380,12 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
return m;
}
#ifdef MIXBUS
if (is_channelstrip ()) {
return Match (Replicate, 1, _strict_io);
}
#endif
ChanCount ns_inputs = inputs - sidechain_input_pins ();
DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("resolving 'Impossible' match for %1\n", name()));
@ -1394,7 +1398,7 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
// houston, we have a problem.
return Match (Impossible, 0);
}
return Match (Delegate, 1);
return Match (Delegate, 1, _strict_io);
}
ChanCount midi_bypass;
@ -1413,7 +1417,7 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
}
if (f > 0 && outputs * f >= _configured_out) {
out = outputs * f + midi_bypass;
return Match (Replicate, f);
return Match (Replicate, f, _strict_io);
}
// add at least as many plugins needed to connect all inputs (w/o sidechain pins)
@ -1425,7 +1429,7 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
}
if (f > 0) {
out = outputs * f + midi_bypass;
return Match (Replicate, f);
return Match (Replicate, f, _strict_io);
}
// add at least as many plugins needed to connect all inputs
@ -1436,7 +1440,7 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
f = max (f, (uint32_t) ceil (inx.get(*t) / (float)nin));
}
out = outputs * f + midi_bypass;
return Match (Replicate, f);
return Match (Replicate, f, _strict_io);
}
/* this is the original Ardour 3/4 behavior, mainly for backwards compatibility */
@ -1510,7 +1514,12 @@ PluginInsert::automatic_can_support_io_configuration (ChanCount const & inx, Cha
uint32_t f = 0;
bool can_replicate = true;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
#ifdef MIXBUS
if (is_channelstrip ()) {
can_replicate = false;
}
#endif
for (DataType::iterator t = DataType::begin(); t != DataType::end() && can_replicate; ++t) {
// ignore side-chains
uint32_t nin = ns_inputs.get (*t);