From 8346a62a08c91de8b7672faa0ebfb91d0e647fa0 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 12 Feb 2012 22:43:46 -0800 Subject: PollScheduler: use idle_add to check termination This fixes a regression in termination signal handling since commit 8c1fcf5a9ba9fa4d406a4d0cc284fe73a84f5a63, which cause termination signals to be ignored until a running job had exited. This regression is not really noticeable for Ctrl-C handling, since in that case the SIGINT propagets to subprocesses, causing them to exit and trigger a _schedule() call whichtriggers a termination check. --- pym/_emerge/QueueScheduler.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'pym/_emerge/QueueScheduler.py') diff --git a/pym/_emerge/QueueScheduler.py b/pym/_emerge/QueueScheduler.py index 731a677e5..730bd787d 100644 --- a/pym/_emerge/QueueScheduler.py +++ b/pym/_emerge/QueueScheduler.py @@ -43,6 +43,7 @@ class QueueScheduler(PollScheduler): timeout_callback.timeout_id = self.sched_iface.timeout_add( timeout, timeout_callback) + term_check_id = self.sched_iface.idle_add(self._termination_check) try: while not (timeout_callback is not None and timeout_callback.timed_out): @@ -59,6 +60,7 @@ class QueueScheduler(PollScheduler): timeout_callback.timed_out): self.sched_iface.iteration() finally: + self.sched_iface.source_remove(term_check_id) if timeout_callback is not None: self.sched_iface.unregister(timeout_callback.timeout_id) -- cgit v1.2.3-1-g7c22