Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-02-25 18:29:57 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-02-25 18:29:57 (GMT)
commit15ecda2e0a2d7a06d5afe42ac42b3a1d9913c011 (patch)
tree253d84a54e8f1b49d6141900bc1fda37c57f3a1c /src
parent921e5df97b3239db1ae6ee93748def336805f938 (diff)
Give time for atexit to execute when closing the emulator #435
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/model/session.py7
-rw-r--r--src/jarabe/view/keyhandler.py5
2 files changed, 9 insertions, 3 deletions
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()