diff options
author | David Robillard <d@drobilla.net> | 2018-03-24 14:07:08 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-03-24 14:07:08 +0100 |
commit | c9863ba79edbac7ae78ad0e374a2988c816ad31a (patch) | |
tree | 7dcebb7dd779fded2cb358b7c4981f84a8c69e3d /src/server/RunContext.hpp | |
parent | cc110c047e20499d995dac9bcbb1e9d15bbae4c2 (diff) | |
download | ingen-c9863ba79edbac7ae78ad0e374a2988c816ad31a.tar.gz ingen-c9863ba79edbac7ae78ad0e374a2988c816ad31a.tar.bz2 ingen-c9863ba79edbac7ae78ad0e374a2988c816ad31a.zip |
WIP: Variant task
Diffstat (limited to 'src/server/RunContext.hpp')
-rw-r--r-- | src/server/RunContext.hpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/server/RunContext.hpp b/src/server/RunContext.hpp index bb64a250..6c8246ca 100644 --- a/src/server/RunContext.hpp +++ b/src/server/RunContext.hpp @@ -20,6 +20,8 @@ #include <cstdint> #include <thread> +#include <boost/variant/variant.hpp> + #include "lv2/lv2plug.in/ns/ext/urid/urid.h" #include "raul/RingBuffer.hpp" @@ -30,7 +32,12 @@ namespace Server { class Engine; class PortImpl; -class Task; + +struct SingleTask; +struct SeqTask; +struct ParTask; + +using Task = boost::variant<SingleTask, SeqTask, ParTask>; /** Graph execution context. * @@ -115,7 +122,7 @@ public: } /** Claim a parallel task, and signal others that work is available. */ - void claim_task(Task* task); + void claim_task(ParTask* task); /** Steal a task from some other context if possible. */ Task* steal_task() const; @@ -126,7 +133,7 @@ public: void join(); inline Engine& engine() const { return _engine; } - inline Task* task() const { return _task; } + inline ParTask* task() const { return _task; } inline unsigned id() const { return _id; } inline FrameTime start() const { return _start; } inline FrameTime time() const { return _start + _offset; } @@ -143,7 +150,7 @@ protected: Engine& _engine; ///< Engine we're running in Raul::RingBuffer* _event_sink; ///< Port updates from process context - Task* _task; ///< Currently executing task + ParTask* _task; ///< Currently executing task std::thread* _thread; ///< Thread (NULL for main run context) unsigned _id; ///< Context ID |