diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-04 01:23:58 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-04 01:48:30 +0200 |
commit | d0a116b2ae1af29d16273be9ad6ec6e5fce95fbf (patch) | |
tree | 6c0e7a6469a8d7905b59d28fc42fe4faf16bb88e /libs/ardour/instrument_info.cc | |
parent | 096d23fcc2d7429e6b83635966d976186d8f1ef3 (diff) |
Forward instrument MIDNAM changed signal
Diffstat (limited to 'libs/ardour/instrument_info.cc')
-rw-r--r-- | libs/ardour/instrument_info.cc | 13 |
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 |