summaryrefslogtreecommitdiffstats
path: root/src/server/Engine.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-05-12 07:04:11 +0000
committerDavid Robillard <d@drobilla.net>2012-05-12 07:04:11 +0000
commit52011c3b045d9f49a4bc25c9f545bb35e5c2a0a9 (patch)
tree29012d7da9bf9e0525574b3d8713eaf828626ac5 /src/server/Engine.hpp
parent2e8a9b483a8d2ca7ba2a4feb4a845a32ab1eebeb (diff)
downloadingen-52011c3b045d9f49a4bc25c9f545bb35e5c2a0a9.tar.gz
ingen-52011c3b045d9f49a4bc25c9f545bb35e5c2a0a9.tar.bz2
ingen-52011c3b045d9f49a4bc25c9f545bb35e5c2a0a9.zip
More work towards checking contexts via parameter rather than thread magic.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4376 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/Engine.hpp')
-rw-r--r--src/server/Engine.hpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/server/Engine.hpp b/src/server/Engine.hpp
index c32c398a..bd211d56 100644
--- a/src/server/Engine.hpp
+++ b/src/server/Engine.hpp
@@ -24,6 +24,7 @@
#include "raul/SharedPtr.hpp"
#include "ProcessContext.hpp"
+#include "MessageContext.hpp"
namespace Raul { class Maid; }
@@ -75,10 +76,19 @@ public:
void set_driver(SharedPtr<Driver> driver);
+ /** Return true iff any events are pending. */
bool pending_events();
+
+ /** Enqueue an event to be processed (non-realtime threads only). */
void enqueue_event(Event* ev);
+
+ /** Process events (process thread only). */
void process_events();
+ bool is_process_context(const Context& context) const {
+ return &context == &_process_context;
+ }
+
Ingen::Shared::World* world() const { return _world; }
EventWriter* interface() const { return _event_writer; }
@@ -87,11 +97,12 @@ public:
ControlBindings* control_bindings() const { return _control_bindings; }
Driver* driver() const { return _driver.get(); }
Raul::Maid* maid() const { return _maid; }
- MessageContext* message_context() const { return _message_context; }
NodeFactory* node_factory() const { return _node_factory; }
PostProcessor* post_processor() const { return _post_processor; }
PatchImpl* root_patch() const { return _root_patch; }
- ProcessContext& process_context() { return _process_context; }
+
+ MessageContext& message_context() { return _message_context; }
+ ProcessContext& process_context() { return _process_context; }
SharedPtr<EngineStore> engine_store() const;
@@ -105,13 +116,14 @@ private:
ControlBindings* _control_bindings;
SharedPtr<Driver> _driver;
Raul::Maid* _maid;
- MessageContext* _message_context;
NodeFactory* _node_factory;
PreProcessor* _pre_processor;
PostProcessor* _post_processor;
EventWriter* _event_writer;
- PatchImpl* _root_patch;
+ PatchImpl* _root_patch;
+
+ MessageContext _message_context;
ProcessContext _process_context;
bool _quit_flag;