summaryrefslogtreecommitdiffstats
path: root/src/server/RunContext.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-04-03 18:23:08 +0200
committerDavid Robillard <d@drobilla.net>2018-04-03 18:23:08 +0200
commit76c3ac8d285deef88f41e6cbba1f3c77a49df179 (patch)
treeb02966fef554acac5924898df8b3d76d35723258 /src/server/RunContext.cpp
parent7a5e694c3ffed12532ee2b97f99c4b56dbba4d02 (diff)
downloadingen-parallel-work.tar.gz
ingen-parallel-work.tar.bz2
ingen-parallel-work.zip
WIP: parallel stuffparallel-work
Diffstat (limited to 'src/server/RunContext.cpp')
-rw-r--r--src/server/RunContext.cpp16
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);
}
}