diff --git a/blueman/bluez/Manager.py b/blueman/bluez/Manager.py index d58a7985c..486e111c2 100644 --- a/blueman/bluez/Manager.py +++ b/blueman/bluez/Manager.py @@ -27,14 +27,7 @@ class Manager(GObject.GObject, metaclass=SingletonGObjectMeta): def __init__(self) -> None: super().__init__() - self._object_manager = Gio.DBusObjectManagerClient.new_for_bus_sync( - Gio.BusType.SYSTEM, Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, - self.__bus_name, '/', None, None, None) - - self._object_manager.connect("object-added", self._on_object_added) - self._object_manager.connect("object-removed", self._on_object_removed) - self._object_manager.connect("interface-added", self._on_interface_added) - self._object_manager.connect("interface-removed", self._on_interface_removed) + self.reconnect() def _on_object_added(self, _object_manager: Gio.DBusObjectManager, dbus_object: Gio.DBusObject) -> None: device_proxy = dbus_object.get_interface('org.bluez.Device1') @@ -163,6 +156,15 @@ def find_device(self, address: BtAddress, adapter_path: ObjectPath = ObjectPath( return device return None + def reconnect(self) -> None: + self._object_manager = Gio.DBusObjectManagerClient.new_for_bus_sync( + Gio.BusType.SYSTEM, Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, + self.__bus_name, '/', None, None, None) + self._object_manager.connect("object-added", self._on_object_added) + self._object_manager.connect("object-removed", self._on_object_removed) + self._object_manager.connect("interface-added", self._on_interface_added) + self._object_manager.connect("interface-removed", self._on_interface_removed) + def destroy(self) -> None: if self._object_manager: del self._object_manager diff --git a/blueman/main/Applet.py b/blueman/main/Applet.py index a709ace24..79afcd692 100644 --- a/blueman/main/Applet.py +++ b/blueman/main/Applet.py @@ -79,6 +79,7 @@ def _on_dbus_name_appeared(self, _connection: Gio.DBusConnection, name: str, own logging.info(f"{name} {owner}") self.manager_state = True self.plugin_run_state_changed = True + self.Manager.reconnect() for plugin in self.Plugins.get_loaded_plugins(AppletPlugin): plugin.on_manager_state_changed(self.manager_state)