1 |
Author: zmedico |
2 |
Date: 2008-07-29 21:27:59 +0000 (Tue, 29 Jul 2008) |
3 |
New Revision: 11273 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Count state changes in Scheduler._schedule_tasks() and avoid some extra calls |
9 |
when nothing changes. |
10 |
|
11 |
|
12 |
Modified: main/trunk/pym/_emerge/__init__.py |
13 |
=================================================================== |
14 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-29 20:52:05 UTC (rev 11272) |
15 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-29 21:27:59 UTC (rev 11273) |
16 |
@@ -9655,19 +9655,26 @@ |
17 |
def _schedule_tasks(self): |
18 |
remaining, state_change = self._schedule_tasks_imp() |
19 |
self._status_display.display() |
20 |
+ |
21 |
+ state_change = 0 |
22 |
for q in self._task_queues.values(): |
23 |
- q.schedule() |
24 |
+ if q.schedule(): |
25 |
+ state_change += 1 |
26 |
|
27 |
# Cancel prefetchers if they're the only reason |
28 |
# the main poll loop is still running. |
29 |
if self._failed_pkgs and \ |
30 |
- not (self._jobs or self._task_queues.merge): |
31 |
+ not (self._jobs or self._task_queues.merge) and \ |
32 |
+ self._task_queues.fetch: |
33 |
self._task_queues.fetch.clear() |
34 |
+ state_change += 1 |
35 |
|
36 |
- remaining, state_change = self._schedule_tasks_imp() |
37 |
- self._status_display.display() |
38 |
- return remaining |
39 |
+ if state_change: |
40 |
+ remaining, state_change = self._schedule_tasks_imp() |
41 |
+ self._status_display.display() |
42 |
|
43 |
+ return bool(self._pkg_queue and not self._failed_pkgs) |
44 |
+ |
45 |
def _job_delay(self): |
46 |
""" |
47 |
@rtype: bool |