summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/_emerge/QueueScheduler.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/pym/_emerge/QueueScheduler.py b/pym/_emerge/QueueScheduler.py
index 91a2831f6..e115ba1aa 100644
--- a/pym/_emerge/QueueScheduler.py
+++ b/pym/_emerge/QueueScheduler.py
@@ -1,8 +1,6 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-import time
-
from _emerge.PollScheduler import PollScheduler
class QueueScheduler(PollScheduler):
@@ -36,25 +34,28 @@ class QueueScheduler(PollScheduler):
def run(self, timeout=None):
- timeout_id = None
+ timeout_callback = None
if timeout is not None:
def timeout_callback():
- raise StopIteration()
- timeout_id = self._timeout_add(timeout, timeout_callback)
+ timeout_callback.timed_out = True
+ return False
+ timeout_callback.timed_out = False
+ timeout_callback.timeout_id = self._timeout_add(
+ timeout, timeout_callback)
try:
- while self._schedule():
+ while not (timeout_callback is not None and
+ timeout_callback.timed_out) and self._schedule():
self._iteration()
- while self._running_job_count():
+ while not (timeout_callback is not None and
+ timeout_callback.timed_out) and self._running_job_count():
self._iteration()
- except StopIteration:
- pass
-
- if timeout_id is not None:
- self._unregister(timeout_id)
+ finally:
+ if timeout_callback is not None:
+ self._unregister(timeout_callback.timeout_id)
def _schedule_tasks(self):
"""