summaryrefslogtreecommitdiff
path: root/src/Task.cc
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-05 05:23:59 +0200
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-05 05:23:59 +0200
commit0afa615d1db99f5a27459f4dc6fc8c045e55c4e6 (patch)
tree7c30bbf680ad1e1e4c68e43c6159bc31ecda2761 /src/Task.cc
parentf29524bb7a37db02f5c98854f76e855dbafa6575 (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/Task.cc')
-rw-r--r--src/Task.cc2
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);
}