diff options
author | David Robillard <d@drobilla.net> | 2017-12-18 11:27:42 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-12-18 11:27:42 +0100 |
commit | a9d93e31925c8374c6e3a9bb14da7c0153d9edb9 (patch) | |
tree | 15e02bcaeb6b8c0979a91331dd08c0999fd0ce16 /src/server/Task.hpp | |
parent | 4324e6b427b3ed93b6dd74bde0be49b9508b678e (diff) | |
download | ingen-a9d93e31925c8374c6e3a9bb14da7c0153d9edb9.tar.gz ingen-a9d93e31925c8374c6e3a9bb14da7c0153d9edb9.tar.bz2 ingen-a9d93e31925c8374c6e3a9bb14da7c0153d9edb9.zip |
Fix recursive type issues with some toolchains
Diffstat (limited to 'src/server/Task.hpp')
-rw-r--r-- | src/server/Task.hpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/server/Task.hpp b/src/server/Task.hpp index 203627a1..3bcfbb40 100644 --- a/src/server/Task.hpp +++ b/src/server/Task.hpp @@ -21,6 +21,7 @@ #include <cassert> #include <deque> #include <functional> +#include <memory> #include <ostream> namespace Ingen { @@ -77,14 +78,14 @@ public: bool empty() const { return _mode != Mode::SINGLE && _children.empty(); } /** Simplify task expression. */ - static Task simplify(Task task); + static std::unique_ptr<Task> simplify(std::unique_ptr<Task>&& task); /** Steal a child task from this task (succeeds for PARALLEL only). */ Task* steal(RunContext& context); /** Prepend a child to this task. */ void push_front(Task&& task) { - _children.emplace_front(std::move(task)); + _children.emplace_front(std::make_unique<Task>(std::move(task))); } Mode mode() const { return _mode; } @@ -94,14 +95,14 @@ public: void set_done(bool done) { _done = done; } private: - typedef std::deque<Task> Children; + typedef std::deque<std::unique_ptr<Task>> Children; Task(const Task&) = delete; Task& operator=(const Task&) = delete; Task* get_task(RunContext& context); - void append(Task t) { + void append(std::unique_ptr<Task>&& t) { _children.emplace_back(std::move(t)); } |