projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix crash when copy'ing latent plugins
[ardour.git]
/
libs
/
ardour
/
plugin_insert.cc
diff --git
a/libs/ardour/plugin_insert.cc
b/libs/ardour/plugin_insert.cc
index 7fb799d4923e22cbf24c0f606b744702d0ddf588..9a0e6c55c40574e32cd001bf5e3df688593e625c 100644
(file)
--- a/
libs/ardour/plugin_insert.cc
+++ b/
libs/ardour/plugin_insert.cc
@@
-85,8
+85,8
@@
PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug)
add_plugin (plug);
create_automatable_parameters ();
const ChanCount& sc (sidechain_input_pins ());
add_plugin (plug);
create_automatable_parameters ();
const ChanCount& sc (sidechain_input_pins ());
- if (sc.n_audio () > 0) {
- add_sidechain (sc.n_audio ());
+ if (sc.n_audio () > 0
|| sc.n_midi () > 0
) {
+ add_sidechain (sc.n_audio ()
, sc.n_midi ()
);
}
}
}
}
}
}
@@
-190,14
+190,14
@@
PluginInsert::set_preset_out (const ChanCount& c)
}
bool
}
bool
-PluginInsert::add_sidechain (uint32_t n_audio)
+PluginInsert::add_sidechain (uint32_t n_audio
, uint32_t n_midi
)
{
// caller must hold process lock
if (_sidechain) {
return false;
}
std::ostringstream n;
{
// caller must hold process lock
if (_sidechain) {
return false;
}
std::ostringstream n;
- if (n_audio > 0) {
+ if (n_audio > 0
|| n_midi > 0
) {
n << "Sidechain " << Session::next_name_id ();
} else {
n << "TO BE RESET FROM XML";
n << "Sidechain " << Session::next_name_id ();
} else {
n << "TO BE RESET FROM XML";
@@
-206,7
+206,10
@@
PluginInsert::add_sidechain (uint32_t n_audio)
_sidechain = boost::shared_ptr<SideChain> (sc);
_sidechain->activate ();
for (uint32_t n = 0; n < n_audio; ++n) {
_sidechain = boost::shared_ptr<SideChain> (sc);
_sidechain->activate ();
for (uint32_t n = 0; n < n_audio; ++n) {
- _sidechain->input()->add_port ("", owner()); // add a port, don't connect.
+ _sidechain->input()->add_port ("", owner(), DataType::AUDIO); // add a port, don't connect.
+ }
+ for (uint32_t n = 0; n < n_midi; ++n) {
+ _sidechain->input()->add_port ("", owner(), DataType::MIDI); // add a port, don't connect.
}
PluginConfigChanged (); /* EMIT SIGNAL */
return true;
}
PluginConfigChanged (); /* EMIT SIGNAL */
return true;
@@
-552,6
+555,13
@@
PluginInsert::activate ()
}
Processor::activate ();
}
Processor::activate ();
+ /* when setting state e.g ProcessorBox::paste_processor_state ()
+ * the plugin is not yet owned by a route.
+ * but no matter. Route::add_processors() will call activate () again
+ */
+ if (!owner ()) {
+ return;
+ }
if (_plugin_signal_latency != signal_latency ()) {
_plugin_signal_latency = signal_latency ();
latency_changed ();
if (_plugin_signal_latency != signal_latency ()) {
_plugin_signal_latency = signal_latency ();
latency_changed ();
@@
-2158,7
+2168,7
@@
PluginInsert::automatic_can_support_io_configuration (ChanCount const & inx, Cha
uint32_t f = 0;
bool can_replicate = true;
uint32_t f = 0;
bool can_replicate = true;
- for (DataType::iterator t = DataType::begin(); t != DataType::end()
&& can_replicate
; ++t) {
+ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
// ignore side-chains
uint32_t nin = ns_inputs.get (*t);
// ignore side-chains
uint32_t nin = ns_inputs.get (*t);