From d834a5341dcf3b53408265f75cecc640b6e4fc47 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 19 Jul 2008 10:07:13 +0000 Subject: * Call self._schedule() from inside Scheduler._poll(). This ensures that new jobs can scheduled as soon a the load average is low enough, and one of the running jobs doesn't have to complete for _schedule() to get called. * Cache the result of _background_mode() so it doesn't have to be called inside _schedule(), since this method is called a lot more often now. * Move background related state adjustments into _background_mode(). * Call _status_display.display() unconditionally inside _schedule_tasks(), since we want to update the display to show current load average even if no new jobs are added. svn path=/main/trunk/; revision=11135 --- pym/_emerge/__init__.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 7e11ab8ab..76a279711 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -8719,6 +8719,7 @@ class Scheduler(PollScheduler): max_jobs = 1 self._set_max_jobs(max_jobs) background = self._background_mode() + self._background = background self._max_load = myopts.get("--load-average") @@ -8757,7 +8758,7 @@ class Scheduler(PollScheduler): self._running_root, installed=True) def _poll(self, timeout=None): - self._status_display.display() + self._schedule() return PollScheduler._poll(self, timeout=timeout) def _set_max_jobs(self, max_jobs): @@ -8765,7 +8766,22 @@ class Scheduler(PollScheduler): self._task_queues.jobs.max_jobs = max_jobs def _background_mode(self): - return self._max_jobs > 1 or "--quiet" in self.myopts + """ + Check if background mode is enabled and adjust states as necessary. + + @rtype: bool + @returns: True if background mode is enabled, False otherwise. + """ + background = self._max_jobs > 1 or "--quiet" in self.myopts + + self._logger.parallel = background + + self._status_display.quiet = \ + not background or \ + ("--quiet" in self.myopts and \ + "--verbose" not in self.myopts) + + return background def _set_digraph(self, digraph): if self._max_jobs < 2: @@ -9405,8 +9421,7 @@ class Scheduler(PollScheduler): def _schedule_tasks(self): remaining, state_change = self._schedule_tasks_imp() - if state_change: - self._status_display.display() + self._status_display.display() return remaining def _schedule_tasks_imp(self): @@ -9416,12 +9431,7 @@ class Scheduler(PollScheduler): """ task_queues = self._task_queues - background = self._background_mode() - self._logger.parallel = background - self._status_display.quiet = \ - not background or \ - ("--quiet" in self.myopts and \ - "--verbose" not in self.myopts) + background = self._background state_change = 0 -- cgit v1.2.3-1-g7c22