summaryrefslogtreecommitdiffstats
path: root/src/libs/client/PluginModel.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-12-21 03:32:55 +0000
committerDavid Robillard <d@drobilla.net>2007-12-21 03:32:55 +0000
commit39dbfbaf661bfec067d02b26bbc04608d74413c6 (patch)
tree11b3d8948b881f3272b944a483466dd1b57fdbf9 /src/libs/client/PluginModel.cpp
parent3efacf8a4ac1b0c90b544f41881596ff91f37efa (diff)
downloadingen-39dbfbaf661bfec067d02b26bbc04608d74413c6.tar.gz
ingen-39dbfbaf661bfec067d02b26bbc04608d74413c6.tar.bz2
ingen-39dbfbaf661bfec067d02b26bbc04608d74413c6.zip
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
Diffstat (limited to 'src/libs/client/PluginModel.cpp')
-rw-r--r--src/libs/client/PluginModel.cpp65
1 files changed, 5 insertions, 60 deletions
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<PluginUI>
+PluginModel::ui(SharedPtr<EngineInterface> engine, SharedPtr<NodeModel> node) const
{
if (_type != LV2)
- return NULL;
+ return SharedPtr<PluginUI>();
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);
}