From: Robin Gareus Date: Mon, 2 Sep 2013 14:21:12 +0000 (+0200) Subject: LV2 external UI handling - revert to <= 3.3. behaviour X-Git-Tag: 3.4~8 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=c05ad01b2d3509c9047d320f2c35fbdced648165;p=ardour.git LV2 external UI handling - revert to <= 3.3. behaviour Don't ever clean up external UI plugins that use the LV2plug.in URI. only free the memory of the last instance when the plugin is removed or ardour closes. --- diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index ed783b0886..1deff32abd 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -115,8 +115,8 @@ LV2PluginUI::on_external_ui_closed(void* controller) { //printf("LV2PluginUI::on_external_ui_closed\n"); LV2PluginUI* me = (LV2PluginUI*)controller; - me->_screen_update_connection.disconnect(); if (me->_lv2->is_external_kx() /* called from plugin's UI_RUN() */) { + me->_screen_update_connection.disconnect(); // plugin is free()d in parent function - LV2PluginUI::output_update() me->_external_ui_ptr = NULL; } @@ -374,7 +374,14 @@ LV2PluginUI::~LV2PluginUI () delete[] _values; } - on_window_hide(); + _message_update_connection.disconnect(); + _screen_update_connection.disconnect(); + + if (_external_ui_ptr && _lv2->is_external_kx()) { + LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); + } + lv2ui_free(); + _external_ui_ptr = NULL; } int @@ -478,6 +485,7 @@ LV2PluginUI::on_window_hide() if (_lv2->is_external_ui()) { if (!_external_ui_ptr) { return; } + if (!_lv2->is_external_kx()) { return ; } _screen_update_connection.disconnect(); LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); _external_ui_ptr = NULL;