From 76c3ac8d285deef88f41e6cbba1f3c77a49df179 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 3 Apr 2018 18:23:08 +0200 Subject: WIP: parallel stuff --- src/server/RunContext.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/server/RunContext.cpp') diff --git a/src/server/RunContext.cpp b/src/server/RunContext.cpp index b446addf..14bbaa30 100644 --- a/src/server/RunContext.cpp +++ b/src/server/RunContext.cpp @@ -143,12 +143,17 @@ RunContext::emit_notifications(FrameTime end) void RunContext::claim_task(ParTask* task) { - if ((_task = task)) { - _engine.signal_tasks_available(); + if (task) { + if (!_task) { + _task = task; + _engine.signal_tasks_available(); + } + } else { + _task = nullptr; } } -Task* +Job RunContext::steal_task() const { return _engine.steal_task(_id + 1); @@ -185,8 +190,9 @@ void RunContext::run() { while (_engine.wait_for_tasks()) { - for (Task* t; (t = _engine.steal_task(0));) { - Server::run(*t, *this); + for (Job job; (job = _engine.steal_task(0)).task;) { + // fprintf(stderr, "%d run\n", id()); + Server::run(job, *this); // t->run(*this); } } -- cgit v1.2.1