diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-30 11:50:39 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-30 11:50:39 (GMT) |
commit | e96ab69ad05e60323b0d71cfb9975982afc7135d (patch) | |
tree | 085c43cec1b23b0850dfc6e9c2b0895318d038ad | |
parent | 836a732136cf7fba07e3c38ce560960ab18028d9 (diff) |
Shutdown/Reboot fails when multiple users are logged in #246
-rw-r--r-- | src/jarabe/model/session.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/jarabe/model/session.py b/src/jarabe/model/session.py index 1c9c6db..caf675d 100644 --- a/src/jarabe/model/session.py +++ b/src/jarabe/model/session.py @@ -19,6 +19,7 @@ import dbus import os import signal import sys +import logging from sugar import session from sugar import env @@ -47,8 +48,6 @@ class SessionManager(session.SessionManager): self.initiate_shutdown() def shutdown_completed(self): - session.SessionManager.shutdown_completed(self) - bus = dbus.SystemBus() proxy = bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/devices/computer') @@ -58,12 +57,18 @@ class SessionManager(session.SessionManager): if env.is_emulator(): self._close_emulator() else: - if self._logout_mode == self.MODE_SHUTDOWN: - pm.Shutdown() - elif self._logout_mode == self.MODE_REBOOT: - pm.Reboot() + try: + if self._logout_mode == self.MODE_SHUTDOWN: + pm.Shutdown() + elif self._logout_mode == self.MODE_REBOOT: + pm.Reboot() + except: + logging.exception('Can not stop sugar') + self.session.cancel_shutdown() + return - gtk.main_quit() + session.SessionManager.shutdown_completed(self) + gtk.main_quit() def _close_emulator(self): gtk.main_quit() |