diff --git a/shell/ConsoleWindow.py b/shell/ConsoleWindow.py index 5efd880c..3c98bfe9 100644 --- a/shell/ConsoleWindow.py +++ b/shell/ConsoleWindow.py @@ -47,10 +47,7 @@ class ConsoleDbusService(dbus.service.Object): @dbus.service.method('org.laptop.Sugar.Console', in_signature="saias", out_signature="") def log(self, module_id, levels, messages): - i = 0 - while i < len(levels): - self._console.log(levels[i], module_id, messages[i]) - i += 1 + self._console.log(module_id, levels, messages) class ConsoleWindow(gtk.Window): def __init__(self): @@ -122,6 +119,9 @@ class ConsoleWindow(gtk.Window): page = self._nb.page_num(self._consoles[page_id]) self._nb.set_current_page(page) - def log(self, level, page_id, message): + def log(self, page_id, levels, messages): console = self._get_console(page_id) - console.log(level, message) + i = 0 + while i < len(levels): + console.log(levels[i], messages[i]) + i += 1 diff --git a/shell/PresenceService/PresenceService.py b/shell/PresenceService/PresenceService.py index 3f655b9f..72e9460a 100644 --- a/shell/PresenceService/PresenceService.py +++ b/shell/PresenceService/PresenceService.py @@ -265,7 +265,13 @@ class PresenceService(object): self._bus_name = dbus.service.BusName(_PRESENCE_SERVICE, bus=self._session_bus) self._dbus_helper = PresenceServiceDBusHelper(self, self._bus_name) + self._started = False + def start(self): + if self._started: + return + self._started = True + # Connect to Avahi for mDNS stuff self._system_bus = dbus.SystemBus() self._mdns_service = dbus.Interface(self._system_bus.get_object(avahi.DBUS_NAME, @@ -661,8 +667,6 @@ class PresenceService(object): if not group: raise ValueError("Service was not a local service provided by this laptop!") group.Free() - key = (service.get_full_name(), service.get_type()) - del self._services[key] def register_service_type(self, stype): """Requests that the Presence service look for and recognize diff --git a/sugar/logger.py b/sugar/logger.py index 9328058a..e5bc37cf 100644 --- a/sugar/logger.py +++ b/sugar/logger.py @@ -20,19 +20,21 @@ class MessageQueue: self._console_id = console_id self._levels = [] self._messages = [] - + self._bus = dbus.SessionBus() + if self._console == None: - bus = dbus.SessionBus() - con = bus._connection + con = self._bus._connection if dbus.dbus_bindings.bus_name_has_owner(con, CONSOLE_BUS_NAME): self.setup_console() - bus.add_signal_receiver(self.__name_owner_changed, + else: + self._bus.add_signal_receiver( + self.__name_owner_changed, dbus_interface = "org.freedesktop.DBus", signal_name = "NameOwnerChanged") def setup_console(self): - bus = dbus.SessionBus() - proxy_obj = bus.get_object(CONSOLE_BUS_NAME, CONSOLE_OBJECT_PATH) + proxy_obj = self._bus.get_object(CONSOLE_BUS_NAME, + CONSOLE_OBJECT_PATH) self._console = dbus.Interface(proxy_obj, CONSOLE_IFACE) self._queue_log() @@ -51,8 +53,12 @@ class MessageQueue: if self._console == None or len(self._messages) == 0: return False - self._console.log(self._console_id, self._levels, - self._messages, timeout = 1000) + if isinstance(self._console, dbus.Interface): + self._console.log(self._console_id, self._levels, + self._messages, timeout = 1000) + else: + self._console.log(self._console_id, self._levels, + self._messages) self._levels = [] self._messages = []