From 254b434f0a79fea54bd963e8ff2e845a5b0cd3a6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 19 Mar 2012 20:16:46 +0000 Subject: Partially functioning communication between Ingen LV2 plugin and UI. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4078 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/ingen_gui_lv2.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/gui/ingen_gui_lv2.cpp') diff --git a/src/gui/ingen_gui_lv2.cpp b/src/gui/ingen_gui_lv2.cpp index 9898005e..0004b935 100644 --- a/src/gui/ingen_gui_lv2.cpp +++ b/src/gui/ingen_gui_lv2.cpp @@ -18,6 +18,7 @@ #include "ingen/client/ClientStore.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/SigClientInterface.hpp" +#include "ingen/shared/AtomReader.hpp" #include "ingen/shared/AtomSink.hpp" #include "ingen/shared/AtomWriter.hpp" #include "ingen/shared/Configuration.hpp" @@ -55,20 +56,21 @@ struct IngenLV2AtomSink : public Ingen::Shared::AtomSink { struct IngenLV2UI { IngenLV2UI() - : conf(&forge) + : conf() , sink(NULL) { } int argc; char** argv; - Raul::Forge forge; + Ingen::Forge* forge; Ingen::Shared::Configuration conf; Ingen::Shared::World* world; IngenLV2AtomSink* sink; SharedPtr app; SharedPtr view; SharedPtr engine; + SharedPtr reader; SharedPtr client; }; @@ -98,6 +100,8 @@ instantiate(const LV2UI_Descriptor* descriptor, ui->world = new Ingen::Shared::World( &ui->conf, ui->argc, ui->argv, map, unmap); + ui->forge = new Ingen::Forge(*ui->world->lv2_uri_map().get()); + if (!ui->world->load_module("client")) { delete ui; return NULL; @@ -120,6 +124,13 @@ instantiate(const LV2UI_Descriptor* descriptor, new Ingen::Client::SigClientInterface()); ui->app->attach(ui->client); + ui->reader = SharedPtr( + new Ingen::Shared::AtomReader(*ui->world->lv2_uri_map().get(), + *ui->world->uris().get(), + ui->world->forge(), + *ui->client.get())); + + // Create empty root patch model Ingen::Resource::Properties props; props.insert(std::make_pair(ui->app->uris().rdf_type, @@ -150,6 +161,9 @@ port_event(LV2UI_Handle handle, uint32_t format, const void* buffer) { + IngenLV2UI* ui = (IngenLV2UI*)handle; + LV2_Atom* atom = (LV2_Atom*)buffer; + ui->reader->write(atom); } const void* -- cgit v1.2.1