From 15ecda2e0a2d7a06d5afe42ac42b3a1d9913c011 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Wed, 25 Feb 2009 18:29:57 +0000 Subject: Give time for atexit to execute when closing the emulator #435 --- diff --git a/src/jarabe/model/session.py b/src/jarabe/model/session.py index 8927260..b6e3a59 100644 --- a/src/jarabe/model/session.py +++ b/src/jarabe/model/session.py @@ -18,6 +18,7 @@ import gtk import dbus import os import signal +import sys from sugar import session from sugar import env @@ -65,10 +66,16 @@ class SessionManager(session.SessionManager): gtk.main_quit() def _close_emulator(self): + gtk.main_quit() + if os.environ.has_key('SUGAR_EMULATOR_PID'): pid = int(os.environ['SUGAR_EMULATOR_PID']) os.kill(pid, signal.SIGTERM) + # Need to call this ASAP so the atexit handlers get called before we get + # killed by the X (dis)connection + sys.exit() + def get_session_manager(): global _session_manager diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index fb02d7b..4b95235 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -31,6 +31,7 @@ from sugar._sugarext import KeyGrabber from jarabe.model import screen from jarabe.model import sound from jarabe.model import shell +from jarabe.model import session from jarabe.view.tabbinghandler import TabbingHandler from jarabe.model.shell import ShellModel from jarabe import config @@ -253,9 +254,7 @@ class KeyHandler(object): raise def handle_quit_emulator(self): - if os.environ.has_key('SUGAR_EMULATOR_PID'): - pid = int(os.environ['SUGAR_EMULATOR_PID']) - os.kill(pid, signal.SIGTERM) + session.get_session_manager().shutdown() def handle_open_search(self): journalactivity.get_journal().focus_search() -- cgit v0.9.1