summaryrefslogtreecommitdiff
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
parent096d23fcc2d7429e6b83635966d976186d8f1ef3 (diff)
Forward instrument MIDNAM changed signal
-rw-r--r--libs/ardour/ardour/instrument_info.h4
-rw-r--r--libs/ardour/instrument_info.cc13
2 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/ardour/instrument_info.h b/libs/ardour/ardour/instrument_info.h
index 9468831a85..0d3957fb68 100644
--- a/libs/ardour/ardour/instrument_info.h
+++ b/libs/ardour/ardour/instrument_info.h
@@ -86,6 +86,8 @@ private:
_plugin_mode = "";
}
+ void emit_changed ();
+
std::string _external_instrument_model;
std::string _external_instrument_mode;
@@ -93,6 +95,8 @@ private:
mutable std::string _plugin_mode;
boost::weak_ptr<ARDOUR::Processor> internal_instrument;
+
+ PBD::ScopedConnection _midnam_changed;
};
}
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