diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 330020ba93..e4a97bcabc 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -264,20 +264,26 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title) void LV2PluginUI::lv2ui_free() { - if (_lv2->is_external_ui() || !_gui_widget) { - return; + stop_updating(NULL); + + if (_gui_widget) { + remove (*_gui_widget); } - stop_updating(NULL); - remove(*_gui_widget); - #ifdef HAVE_SUIL + cerr << "Calling suil_instance_free() to clean up " + << (_lv2->is_external_ui() ? " external " : " internal ") + << "UI\n"; suil_instance_free((SuilInstance*)_inst); #else SLV2UIInstance inst = (SLV2UIInstance)_inst; const LV2UI_Descriptor* ui_desc = slv2_ui_instance_get_descriptor(inst); LV2UI_Handle ui_handle = slv2_ui_instance_get_handle(inst); + std::cerr << "Calling ui descriptor cleanup on " << ui_desc << " to clean up " + << (_lv2->is_external_ui() ? " external " : " internal ") + << "UI\n"; + if (ui_desc) { ui_desc->cleanup(ui_handle); } @@ -289,7 +295,7 @@ LV2PluginUI::lv2ui_free() LV2PluginUI::~LV2PluginUI () { - //cout << "LV2PluginUI destructor called" << endl; + std::cerr << "LV2PluginUI destructor called" << std::endl; if (_values) { delete[] _values;