diff options
author | David Robillard <d@drobilla.net> | 2018-04-03 18:23:08 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-04-03 18:23:08 +0200 |
commit | 76c3ac8d285deef88f41e6cbba1f3c77a49df179 (patch) | |
tree | b02966fef554acac5924898df8b3d76d35723258 /src/server/RunContext.cpp | |
parent | 7a5e694c3ffed12532ee2b97f99c4b56dbba4d02 (diff) | |
download | ingen-76c3ac8d285deef88f41e6cbba1f3c77a49df179.tar.gz ingen-76c3ac8d285deef88f41e6cbba1f3c77a49df179.tar.bz2 ingen-76c3ac8d285deef88f41e6cbba1f3c77a49df179.zip |
WIP: parallel stuffparallel-work
Diffstat (limited to 'src/server/RunContext.cpp')
-rw-r--r-- | src/server/RunContext.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
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); } } |