[kupfer] browser: Print "Waiting (..)" message at exit only when waiting



commit 38932a5bee6e70d76e432ef50eea8533d172ddf6
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Sun Aug 23 00:41:40 2009 +0200

    browser: Print "Waiting (..)" message at exit only when waiting
    
    Refactor quitting slightly; run main iterations until window is
    closed, then save everything, run 100 main iterations to try to finish
    everything, and if events are still waiting, print the "Waiting.."
    message.

 kupfer/browser.py |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/kupfer/browser.py b/kupfer/browser.py
index 7b873cf..83c1438 100644
--- a/kupfer/browser.py
+++ b/kupfer/browser.py
@@ -1340,16 +1340,18 @@ class WindowController (pretty.OutputMixin):
 		client.connect("save-yourself", self._session_save)
 		client.connect("die", self._session_die)
 
-		try:
-			gtk.main()
-			# put away window *before exiting further*
-			self.put_away()
-			max_events = 100
+		def main_iterations(max_events=0):
 			# use sentinel form of iter
 			for idx, pending in enumerate(iter(gtk.events_pending, False)):
-				if idx > max_events:
+				if max_events and idx > max_events:
 					break
 				gtk.main_iteration()
+
+		try:
+			gtk.main()
+			# put away window *before exiting further*
+			self.put_away()
+			main_iterations(10)
 		except KeyboardInterrupt, info:
 			self.output_info(info, "exiting.. (Warning: Ctrl-C in the shell",
 					"will kill child processes)")
@@ -1358,8 +1360,9 @@ class WindowController (pretty.OutputMixin):
 
 		# Now dismantle everything but keep hanging
 		listen.Unregister()
-		keybindings.bind_key("")
+		keybindings.bind_key(None)
+		main_iterations(100)
+		# if we are still waiting, print a message
 		if gtk.events_pending():
 			self.output_info("Waiting for tasks to finish...")
-			while gtk.events_pending():
-				gtk.main_iteration()
+			main_iterations()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]