From 39dbfbaf661bfec067d02b26bbc04608d74413c6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 21 Dec 2007 03:32:55 +0000 Subject: Fix SLV2 GUI sketchiness, repeated embedding/unembedding/pop-up/window destroy, etc. Break out LV2 GUI stuff to a separate class, SharedPtr it up, spiffify, etc. git-svn-id: http://svn.drobilla.net/lad/ingen@993 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/client/PluginModel.cpp | 65 ++++------------------------------------- 1 file changed, 5 insertions(+), 60 deletions(-) (limited to 'src/libs/client/PluginModel.cpp') diff --git a/src/libs/client/PluginModel.cpp b/src/libs/client/PluginModel.cpp index 8c2ad71c..83762566 100644 --- a/src/libs/client/PluginModel.cpp +++ b/src/libs/client/PluginModel.cpp @@ -20,6 +20,7 @@ //#include "lv2_osc_print.h" #include "PluginModel.hpp" #include "PatchModel.hpp" +#include "PluginUI.hpp" using namespace std; using Ingen::Shared::EngineInterface; @@ -91,73 +92,17 @@ lv2_ui_write(LV2UI_Controller controller, port->type().uri(), buffer_size, buffer); } - -void -lv2_ui_command(LV2UI_Controller controller, - uint32_t argc, - const char* const* argv) -{ - cerr << "********* LV2 UI COMMAND" << endl; -} - - -void -lv2_ui_program_change(LV2UI_Controller controller, - unsigned char program) -{ - cerr << "********* LV2 UI PROGRAM CHANGE" << endl; -} - - -void -lv2_ui_program_save(LV2UI_Controller controller, - unsigned char program, - const char* name) -{ - cerr << "********* LV2 UI PROGRAM SAVE" << endl; -} - #ifdef HAVE_SLV2 -SLV2UIInstance -PluginModel::ui(EngineInterface* engine, NodeModel* node) const +SharedPtr +PluginModel::ui(SharedPtr engine, SharedPtr node) const { if (_type != LV2) - return NULL; + return SharedPtr(); Glib::Mutex::Lock(_rdf_world->mutex()); - // FIXME: leak - NodeController* controller = new NodeController(); - controller->engine = engine; - controller->node = node; - - SLV2UIInstance ret = NULL; - - const char* gtk_gui_uri = "http://ll-plugins.nongnu.org/lv2/ext/gui#GtkGUI"; - - SLV2UIs uis = slv2_plugin_get_uis(_slv2_plugin); - SLV2UI ui = NULL; - - if (slv2_values_size(uis) > 0) { - for (unsigned i=0; i < slv2_uis_size(uis); ++i) { - ui = slv2_uis_get_at(uis, i); - - if (slv2_ui_is_type(ui, gtk_gui_uri)) { - break; - } else { - ui = NULL; - } - } - } - - if (ui) { - cout << "Found GTK Plugin UI " << slv2_ui_get_uri(ui) << endl; - ret = slv2_ui_instantiate(_slv2_plugin, ui, lv2_ui_write, controller, NULL); - //slv2_ui_free(ui); - } - - return ret; + return PluginUI::create(engine, node, _slv2_plugin); } -- cgit v1.2.1