diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2013-08-05 05:23:59 +0200 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2013-08-05 05:23:59 +0200 |
commit | 0afa615d1db99f5a27459f4dc6fc8c045e55c4e6 (patch) | |
tree | 7c30bbf680ad1e1e4c68e43c6159bc31ecda2761 /src | |
parent | f29524bb7a37db02f5c98854f76e855dbafa6575 (diff) |
Impressive all of this worked so far. The Async event needs to be reset otherwise it'll always re-trigger and won't throw an EAgain, as intended.
Diffstat (limited to 'src')
-rw-r--r-- | src/Task.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/Task.cc b/src/Task.cc index 345d310..eb6cc7f 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -330,6 +330,8 @@ void * Balau::QueueBase::iPop(Events::Async * event, bool wait) { m_lock.leave(); Task::operationYield(event, Task::INTERRUPTIBLE); m_lock.enter(); + if (event->gotSignal()) + event->reset(); } else { pthread_cond_wait(&m_cond, &m_lock.m_lock); } |