summaryrefslogtreecommitdiffstats
path: root/src/gui/ingen_gui_lv2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/ingen_gui_lv2.cpp')
-rw-r--r--src/gui/ingen_gui_lv2.cpp18
1 files changed, 16 insertions, 2 deletions
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<Ingen::GUI::App> app;
SharedPtr<Ingen::GUI::PatchView> view;
SharedPtr<Ingen::Interface> engine;
+ SharedPtr<Ingen::Shared::AtomReader> reader;
SharedPtr<Ingen::Client::SigClientInterface> 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<Ingen::Shared::AtomReader>(
+ 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*