summaryrefslogtreecommitdiff
path: root/libs/ardour/instrument_info.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-04 01:23:58 +0200
committerRobin Gareus <robin@gareus.org>2020-04-04 01:48:30 +0200
commitd0a116b2ae1af29d16273be9ad6ec6e5fce95fbf (patch)
tree6c0e7a6469a8d7905b59d28fc42fe4faf16bb88e /libs/ardour/instrument_info.cc
parent096d23fcc2d7429e6b83635966d976186d8f1ef3 (diff)
Forward instrument MIDNAM changed signal
Diffstat (limited to 'libs/ardour/instrument_info.cc')
-rw-r--r--libs/ardour/instrument_info.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/libs/ardour/instrument_info.cc b/libs/ardour/instrument_info.cc
index fcc7baf1cd..c00efeedbf 100644
--- a/libs/ardour/instrument_info.cc
+++ b/libs/ardour/instrument_info.cc
@@ -68,11 +68,24 @@ InstrumentInfo::set_internal_instrument (boost::shared_ptr<Processor> p)
//std::cerr << "InstrumentInfo::set_internal_instrument -- NO CHANGE\n";
return;
}
+ _midnam_changed.disconnect ();
//std::cerr << "InstrumentInfo::set_internal_instrument -> '" << (p ? p->name () : "(NULL)") << "'\n";
internal_instrument = p;
if (_external_instrument_model.empty () || _external_instrument_model == _("Unknown")) {
Changed (); /* EMIT SIGNAL */
}
+
+ boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (p);
+ if (pi && pi->plugin ()->has_midnam ()) {
+ pi->plugin()->UpdatedMidnam.connect_same_thread (_midnam_changed, boost::bind (&InstrumentInfo::emit_changed, this));
+ }
+}
+
+void
+InstrumentInfo::emit_changed () {
+ if (_external_instrument_model.empty ()) {
+ Changed ();
+ }
}
bool