summaryrefslogtreecommitdiffstats
path: root/src/server/ingen_lv2.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-05-09 01:14:30 +0000
committerDavid Robillard <d@drobilla.net>2012-05-09 01:14:30 +0000
commitbaeb3c1872a989b69eb89fae04f93c59b06f258e (patch)
tree83720f9c7bad7ab26c910180d8caea2fd4cb7e70 /src/server/ingen_lv2.cpp
parent4d46a232b30be99bc34e581cbc636345f77c6bc4 (diff)
downloadingen-baeb3c1872a989b69eb89fae04f93c59b06f258e.tar.gz
ingen-baeb3c1872a989b69eb89fae04f93c59b06f258e.tar.bz2
ingen-baeb3c1872a989b69eb89fae04f93c59b06f258e.zip
Simply event interface design and make only one pre-process thread.
This makes event pre-processing actually safe for multiple interfaces since multiple events will never be pre-processed simultaneously and the pre-process order is definitely the same as the execute order. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4323 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/ingen_lv2.cpp')
-rw-r--r--src/server/ingen_lv2.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/server/ingen_lv2.cpp b/src/server/ingen_lv2.cpp
index 94e7344d..731c2f6f 100644
--- a/src/server/ingen_lv2.cpp
+++ b/src/server/ingen_lv2.cpp
@@ -45,7 +45,6 @@
#include "AudioBuffer.hpp"
#include "Driver.hpp"
#include "Engine.hpp"
-#include "EventQueue.hpp"
#include "EventWriter.hpp"
#include "PatchImpl.hpp"
#include "PostProcessor.hpp"
@@ -426,12 +425,10 @@ ingen_instantiate(const LV2_Descriptor* descriptor,
plugin->main = new MainThread(engine);
plugin->main->set_name("Main");
- SharedPtr<Server::EventQueue> queue(new Server::EventQueue());
- SharedPtr<Server::EventWriter> interface(
- new Server::EventWriter(*engine.get(), *queue.get()));
+ SharedPtr<EventWriter> interface =
+ SharedPtr<EventWriter>(engine->interface(), NullDeleter<EventWriter>);
plugin->world->set_engine(interface);
- engine->add_event_source(queue);
Raul::Thread::get().set_context(Server::THREAD_PRE_PROCESS);
Server::ThreadManager::single_threaded = true;
@@ -451,23 +448,20 @@ ingen_instantiate(const LV2_Descriptor* descriptor,
context.locate(0, UINT_MAX, 0);
engine->post_processor()->set_end_time(UINT_MAX);
-
- queue->process(*engine->post_processor(), context, false);
+ engine->process_events(context);
engine->post_processor()->process();
plugin->world->parser()->parse_file(plugin->world,
plugin->world->engine().get(),
patch->filename);
- while (!queue->empty()) {
- queue->process(*engine->post_processor(), context, false);
+ while (engine->pending_events()) {
+ engine->process_events(context);
engine->post_processor()->process();
}
engine->deactivate();
- //plugin->world->load_module("osc_server");
-
return (LV2_Handle)plugin;
}