Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey 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)
commite96ab69ad05e60323b0d71cfb9975982afc7135d (patch)
tree085c43cec1b23b0850dfc6e9c2b0895318d038ad
parent836a732136cf7fba07e3c38ce560960ab18028d9 (diff)
Shutdown/Reboot fails when multiple users are logged in #246
-rw-r--r--src/jarabe/model/session.py19
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()