Remove unused variable
[ardour.git] / libs / ardour / instrument_info.cc
index e7538a061fef79e627902e83b2aa918940129259..4a1dc96046e29eede71076770d0b22c99eb3226d 100644 (file)
@@ -49,6 +49,9 @@ InstrumentInfo::~InstrumentInfo ()
 void
 InstrumentInfo::set_external_instrument (const string& model, const string& mode)
 {
+       if (external_instrument_model == model && external_instrument_mode == mode && internal_instrument.expired ()) {
+               return;
+       }
        external_instrument_model = model;
        external_instrument_mode = mode;
        internal_instrument.reset ();
@@ -58,6 +61,7 @@ InstrumentInfo::set_external_instrument (const string& model, const string& mode
 void
 InstrumentInfo::set_internal_instrument (boost::shared_ptr<Processor> p)
 {
+       bool changed = !external_instrument_mode.empty ();
        external_instrument_mode = "";
 
        boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert>(p);
@@ -67,17 +71,24 @@ InstrumentInfo::set_internal_instrument (boost::shared_ptr<Processor> p)
                 * InstrumentInfo::get_plugin_patch_name() needs to be overhauled,
                 * it limits all PluginInsert to generic-midi or only numbers.
                 */
+               changed |= !internal_instrument.expired ();
+               changed |= external_instrument_model != pi->plugin ()->midnam_model ();
+
                internal_instrument.reset ();
                external_instrument_model = pi->plugin ()->midnam_model ();
                const std::list<std::string> device_modes = MIDI::Name::MidiPatchManager::instance().custom_device_mode_names_by_model (external_instrument_model);
                if (device_modes.size() > 0) {
+                       changed |= external_instrument_mode != device_modes.front();
                        external_instrument_mode = device_modes.front();
                }
        } else {
+               changed |= internal_instrument.lock () != p || external_instrument_model != _("Unknown");
                internal_instrument = p;
-               external_instrument_model = (_("Unknown"));
+               external_instrument_model = _("Unknown");
+       }
+       if (changed) {
+               Changed(); /* EMIT SIGNAL */
        }
-       Changed(); /* EMIT SIGNAL */
 }
 
 string