From 08b278a01d1c96ff8a04c868acb3d744ce1092e4 Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Mon, 11 Jan 2010 21:04:48 +0000 Subject: fail gracefully if system DBus unreachable (#1403) System bus (DBus) is only required for optional features (non-permanent connection to jabber server, removable media, etc.), so fail gracefully (but output errors to logs) if it is unreachable. This aids testing Sugar inside chroots. Tested: - inside chroot (no system bus): errors in log, neighbourhood shows buddies - on XO-1 (regular session, no NM): no errors, neighbourhood shows buddies, battery shown - on XO-1 (regular session, NM): no errors, neighbourhood shows buddies and networks, battery shown, disconnecting + automatic reconnect works, shutdown works Signed-off-by: Sascha Silbe --- (limited to 'src') diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index 76880b8..7b8e3a7 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -664,12 +664,13 @@ class DeviceObserver(object): class NetworkManagerObserver(object): def __init__(self, box): self._box = box - self._bus = dbus.SystemBus() + self._bus = None self._devices = {} self._netmgr = None def listen(self): try: + self._bus = dbus.SystemBus() obj = self._bus.get_object(_NM_SERVICE, _NM_PATH) self._netmgr = dbus.Interface(obj, _NM_IFACE) except dbus.DBusException: diff --git a/src/jarabe/model/session.py b/src/jarabe/model/session.py index caf675d..121db28 100644 --- a/src/jarabe/model/session.py +++ b/src/jarabe/model/session.py @@ -48,16 +48,16 @@ class SessionManager(session.SessionManager): self.initiate_shutdown() def shutdown_completed(self): - bus = dbus.SystemBus() - proxy = bus.get_object('org.freedesktop.Hal', - '/org/freedesktop/Hal/devices/computer') - pm = dbus.Interface(proxy, \ - 'org.freedesktop.Hal.Device.SystemPowerManagement') - if env.is_emulator(): self._close_emulator() - else: + elif self._logout_mode != self.MODE_LOGOUT: try: + bus = dbus.SystemBus() + proxy = bus.get_object('org.freedesktop.Hal', + '/org/freedesktop/Hal/devices/computer') + pm = dbus.Interface(proxy, \ + 'org.freedesktop.Hal.Device.SystemPowerManagement') + if self._logout_mode == self.MODE_SHUTDOWN: pm.Shutdown() elif self._logout_mode == self.MODE_REBOOT: -- cgit v0.9.1