diff options
Diffstat (limited to 'src/Task.cc')
-rw-r--r-- | src/Task.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Task.cc b/src/Task.cc index 0a213be..f4db057 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -149,7 +149,14 @@ void Balau::Events::BaseEvent::doSignal() { } } -Balau::Events::TaskEvent::TaskEvent(Task * taskWaited) : m_taskWaited(taskWaited), m_ack(false), m_distant(false) { +Balau::Events::TaskEvent::TaskEvent(Task * taskWaited) : m_taskWaited(NULL), m_ack(false), m_distant(false) { + if (taskWaited) + attachToTask(taskWaited); +} + +void Balau::Events::TaskEvent::attachToTask(Task * taskWaited) { + AAssert(!m_taskWaited, "You can't attach a TaskEvent twice."); + m_taskWaited = taskWaited; ScopeLock lock(m_taskWaited->m_eventLock); m_taskWaited->m_waitedBy.push_back(this); } |