diff options
author | David Robillard <d@drobilla.net> | 2011-02-24 09:00:54 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-02-24 09:00:54 +0000 |
commit | 128b9ee5107c4d9b3d963bef8de016c08c6d74c6 (patch) | |
tree | 04e4681bca52e4e5fb161d12cf65dac84c699bd8 /src/client/PluginUI.cpp | |
parent | 5e65983c5f9944d4df7a017e215d1934c356de84 (diff) | |
download | ingen-128b9ee5107c4d9b3d963bef8de016c08c6d74c6.tar.gz ingen-128b9ee5107c4d9b3d963bef8de016c08c6d74c6.tar.bz2 ingen-128b9ee5107c4d9b3d963bef8de016c08c6d74c6.zip |
Make Suil exclusively deal with instantiating (not choosing) UIs.
Add slv2_ui_instance_new as a replacement for slv2_ui_instantiate
(now deprecated), which supports cross-toolkit embedding by taking an
additional widget type pointer.
Remove direct Suil dependency from Ingen.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3022 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/client/PluginUI.cpp')
-rw-r--r-- | src/client/PluginUI.cpp | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/src/client/PluginUI.cpp b/src/client/PluginUI.cpp index d13bc1b3..19c0fe03 100644 --- a/src/client/PluginUI.cpp +++ b/src/client/PluginUI.cpp @@ -109,7 +109,7 @@ PluginUI::PluginUI(Ingen::Shared::World* world, PluginUI::~PluginUI() { - suil_instance_free(_instance); + slv2_ui_instance_free(_instance); } @@ -121,35 +121,15 @@ PluginUI::create(Ingen::Shared::World* world, SharedPtr<PluginUI> ret(new PluginUI(world, node)); ret->_features = world->lv2_features()->lv2_features(world, node.get()); - // Build Suil UI set for this plugin - const char* const plugin_uri = slv2_value_as_uri(slv2_plugin_get_uri(plugin)); - SLV2UIs slv2_uis = slv2_plugin_get_uis(plugin); - SuilUIs suil_uis = suil_uis_new(plugin_uri); - for (unsigned i = 0; i < slv2_uis_size(slv2_uis); ++i) { - SLV2UI ui = slv2_uis_get_at(slv2_uis, i); - SLV2Values classes = slv2_ui_get_classes(ui); - for (unsigned j = 0; j < slv2_values_size(classes); ++j) { - SLV2Value type = slv2_values_get_at(classes, j); - if (suil_ui_type_supported("http://lv2plug.in/ns/extensions/ui#GtkUI", - slv2_value_as_uri(type))) { - suil_uis_add( - suil_uis, - slv2_value_as_uri(slv2_ui_get_uri(ui)), - slv2_value_as_uri(type), - slv2_uri_to_path(slv2_value_as_uri(slv2_ui_get_bundle_uri(ui))), - slv2_uri_to_path(slv2_value_as_uri(slv2_ui_get_binary_uri(ui)))); - break; - } else { - warn << "Unsupported LV2 UI type " << slv2_value_as_uri(type) << endl; - } - } - } + SLV2Value gtk_ui = slv2_value_new_uri( + world->slv2_world(), "http://lv2plug.in/ns/extensions/ui#GtkUI"); + + SLV2UI ui = slv2_plugin_get_default_ui(plugin, gtk_ui); - // Attempt to instantiate a UI - SuilInstance instance = suil_instance_new( - suil_uis, - "http://lv2plug.in/ns/extensions/ui#GtkUI", - NULL, + SLV2UIInstance instance = slv2_ui_instance_new( + plugin, + ui, + gtk_ui, lv2_ui_write, ret.get(), ret->_features->array()); @@ -167,7 +147,7 @@ PluginUI::create(Ingen::Shared::World* world, LV2UI_Widget PluginUI::get_widget() { - return (LV2UI_Widget*)suil_instance_get_widget(_instance); + return (LV2UI_Widget*)slv2_ui_instance_get_widget(_instance); } void @@ -176,7 +156,8 @@ PluginUI::port_event(uint32_t port_index, uint32_t format, const void* buffer) { - suil_instance_port_event(_instance, port_index, buffer_size, format, buffer); + slv2_ui_instance_port_event( + _instance, port_index, buffer_size, format, buffer); } } // namespace Client |