From baeb3c1872a989b69eb89fae04f93c59b06f258e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 9 May 2012 01:14:30 +0000 Subject: 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 --- src/server/Engine.hpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/server/Engine.hpp') diff --git a/src/server/Engine.hpp b/src/server/Engine.hpp index 5f218078..042264e4 100644 --- a/src/server/Engine.hpp +++ b/src/server/Engine.hpp @@ -17,8 +17,6 @@ #ifndef INGEN_ENGINE_ENGINE_HPP #define INGEN_ENGINE_ENGINE_HPP -#include - #include #include "ingen/EngineBase.hpp" @@ -38,10 +36,12 @@ class ClientBroadcaster; class ControlBindings; class Driver; class EngineStore; -class EventSource; +class Event; +class EventWriter; class MessageContext; class NodeFactory; class PostProcessor; +class PreProcessor; class ProcessContext; /** @@ -69,11 +69,14 @@ public: virtual bool unregister_client(const Raul::URI& uri); void set_driver(SharedPtr driver); - void add_event_source(SharedPtr source); + + bool pending_events(); + void enqueue_event(Event* ev); void process_events(ProcessContext& context); Ingen::Shared::World* world() const { return _world; } + EventWriter* interface() const { return _event_writer; } ClientBroadcaster* broadcaster() const { return _broadcaster; } BufferFactory* buffer_factory() const { return _buffer_factory; } ControlBindings* control_bindings() const { return _control_bindings; } @@ -97,9 +100,9 @@ private: Raul::Maid* _maid; MessageContext* _message_context; NodeFactory* _node_factory; + PreProcessor* _pre_processor; PostProcessor* _post_processor; - - SharedPtr _event_sources; ///< Intrusive linked list + EventWriter* _event_writer; bool _quit_flag; }; -- cgit v1.2.1