From 86e0c613f11476d1acc73f9bb77581f08d4b57e8 Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@member.fsf.org>
Date: Thu, 24 Sep 2009 13:17:26 +0000
Subject: Shutdown/Reboot fails when multiple users are logged in #246
---
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
|
b
|
import dbus |
19 | 19 | import os |
20 | 20 | import signal |
21 | 21 | import sys |
| 22 | import logging |
22 | 23 | |
23 | 24 | from sugar import session |
24 | 25 | from sugar import env |
… |
… |
class SessionManager(session.SessionManager): |
47 | 48 | self.initiate_shutdown() |
48 | 49 | |
49 | 50 | def shutdown_completed(self): |
50 | | session.SessionManager.shutdown_completed(self) |
51 | | |
52 | 51 | bus = dbus.SystemBus() |
53 | 52 | proxy = bus.get_object('org.freedesktop.Hal', |
54 | 53 | '/org/freedesktop/Hal/devices/computer') |
… |
… |
class SessionManager(session.SessionManager): |
58 | 57 | if env.is_emulator(): |
59 | 58 | self._close_emulator() |
60 | 59 | else: |
61 | | if self._logout_mode == self.MODE_SHUTDOWN: |
62 | | pm.Shutdown() |
63 | | elif self._logout_mode == self.MODE_REBOOT: |
64 | | pm.Reboot() |
| 60 | try: |
| 61 | if self._logout_mode == self.MODE_SHUTDOWN: |
| 62 | pm.Shutdown() |
| 63 | elif self._logout_mode == self.MODE_REBOOT: |
| 64 | pm.Reboot() |
| 65 | except: |
| 66 | logging.exception('Can not stop sugar') |
| 67 | self.session.cancel_shutdown() |
| 68 | return |
65 | 69 | |
66 | | gtk.main_quit() |
| 70 | session.SessionManager.shutdown_completed(self) |
| 71 | gtk.main_quit() |
67 | 72 | |
68 | 73 | def _close_emulator(self): |
69 | 74 | gtk.main_quit() |