Update for new SLV2 UI API.
authorDavid Robillard <d@drobilla.net>
Tue, 8 Mar 2011 20:14:45 +0000 (20:14 +0000)
committerDavid Robillard <d@drobilla.net>
Tue, 8 Mar 2011 20:14:45 +0000 (20:14 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9108 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/lv2_plugin_ui.cc
gtk2_ardour/lv2_plugin_ui.h

index 0ced96b9e33e8f8dc45f04d0faee912686ef4e24..98ccedce6a82507fed85d4785e03993e78b1b6ff 100644 (file)
@@ -30,6 +30,8 @@ using namespace Gtk;
 using namespace ARDOUR;
 using namespace PBD;
 
+SLV2UIHost LV2PluginUI::ui_host = NULL;
+
 void
 LV2PluginUI::lv2_ui_write(LV2UI_Controller controller,
                           uint32_t         port_index,
@@ -166,13 +168,15 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title)
        }
 
 #ifdef HAVE_NEW_SLV2
-       SLV2UIHost ui_host = slv2_ui_host_new(
-               this, LV2PluginUI::lv2_ui_write, NULL, NULL, NULL);
+       if (!LV2PluginUI::ui_host) {
+               LV2PluginUI::ui_host = slv2_ui_host_new(
+               LV2PluginUI::lv2_ui_write, NULL, NULL, NULL);
+       }
        SLV2Value gtk_ui = slv2_value_new_uri(
-               ARDOUR::PluginManager::the_manager()->lv2_world()->world,
-               "http://lv2plug.in/ns/extensions/ui#GtkUI");
+               ARDOUR::PluginManager::the_manager()->lv2_world()->world,
+               "http://lv2plug.in/ns/extensions/ui#GtkUI");
        _inst = slv2_ui_instance_new(
-               _lv2->slv2_plugin(), _lv2->slv2_ui(), gtk_ui, ui_host, features_dst);
+               _lv2->slv2_plugin(), _lv2->slv2_ui(), gtk_ui, ui_host, this, features_dst);
        slv2_value_free(gtk_ui);
        slv2_ui_host_free(ui_host);
 #else
index e267ecab6c2ccad3e313b6757d1d9a70ce9c462a..ec2f00360f40d072bc3f8396a83534f6e455d645 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    Copyright (C) 2008 Paul Davis
-    Author: Dave Robillard
+    Copyright (C) 2008-2011 Paul Davis
+    Author: David Robillard
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -78,6 +78,10 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox
 
        static void on_external_ui_closed(LV2UI_Controller controller);
 
+#ifdef HAVE_NEW_SLV2
+       static SLV2UIHost ui_host;
+#endif
+
        static void lv2_ui_write(
                        LV2UI_Controller controller,
                        uint32_t         port_index,