diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/midi_time_axis.cc | 5 |
2 files changed, 6 insertions, 8 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index 1f38efea44..62a69bef1e 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -677,6 +677,8 @@ GenericPluginUI::build_midi_table () pgm_table->attach (*cui, col, col + 1, row, row+1, FILL|EXPAND, FILL); } + insert->plugin ()->read_midnam(); + midi_refill_patches (); insert->plugin()->BankPatchChange.connect ( @@ -684,12 +686,7 @@ GenericPluginUI::build_midi_table () boost::bind (&GenericPluginUI::midi_bank_patch_change, this, _1), gui_context()); - /* Note: possible race with MidiTimeAxisView::update_patch_selector() - * which uses this signal to update/re-register the midnam (also in gui context). - * MTAV does register before us, so the midnam should already be updated when - * we're notified. - */ - insert->plugin()->UpdateMidnam.connect ( + insert->plugin()->UpdatedMidnam.connect ( midi_connections, invalidator (*this), boost::bind (&GenericPluginUI::midi_refill_patches, this), gui_context()); diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 3627074bc8..c8476dc83e 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -427,6 +427,7 @@ MidiTimeAxisView::update_patch_selector () pi->plugin()->UpdateMidnam.connect (midnam_connection, invalidator (*this), boost::bind (&MidiTimeAxisView::reread_midnam, this), gui_context()); + reread_midnam (); pluginprovided = true; std::string model_name = pi->plugin ()->midnam_model (); @@ -450,9 +451,9 @@ MidiTimeAxisView::reread_midnam () { boost::shared_ptr<Processor> the_instrument (_route->the_instrument()); boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert>(the_instrument); - pi->plugin ()->read_midnam(); + bool rv = pi->plugin ()->read_midnam(); - if (_patch_change_dialog) { + if (rv && _patch_change_dialog) { _patch_change_dialog->refresh (); } } |