diff options
Diffstat (limited to 'src/jarabe/desktop')
-rw-r--r-- | src/jarabe/desktop/meshbox.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index a04922b..eabc737 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -574,13 +574,15 @@ class OlpcMeshView(CanvasPulsingIcon): self._update_color() def disconnect(self): + device_object_path = self._mesh_mgr.mesh_device.object_path + self._bus.remove_signal_receiver(self.__device_state_changed_cb, signal_name='StateChanged', - path=self._device.object_path, + path=device_object_path, dbus_interface=_NM_DEVICE_IFACE) self._bus.remove_signal_receiver(self.__wireless_properties_changed_cb, signal_name='PropertiesChanged', - path=self._device.object_path, + path=device_object_path, dbus_interface=_NM_OLPC_MESH_IFACE) @@ -821,6 +823,7 @@ class NetworkManagerObserver(object): self._bus = None self._devices = {} self._netmgr = None + self._olpc_mesh_device_o = None def listen(self): try: @@ -885,6 +888,7 @@ class NetworkManagerObserver(object): if device_type == network.DEVICE_TYPE_802_11_WIRELESS: self._devices[device_o] = DeviceObserver(self._box, device) elif device_type == network.DEVICE_TYPE_802_11_OLPC_MESH: + self._olpc_mesh_device_o = device_o self._box.enable_olpc_mesh(device) def _get_device_path_error_cb(self, err): @@ -899,12 +903,9 @@ class NetworkManagerObserver(object): observer.disconnect() del self._devices[device_o] return - - device = self._bus.get_object(_NM_SERVICE, device_o) - props = dbus.Interface(device, 'org.freedesktop.DBus.Properties') - device_type = props.Get(_NM_DEVICE_IFACE, 'DeviceType') - if device_type == network.DEVICE_TYPE_802_11_OLPC_MESH: - self._box.disable_olpc_mesh(device) + + if self._olpc_mesh_device_o == device_o: + self._box.disable_olpc_mesh(device_o) class MeshBox(gtk.VBox): __gtype_name__ = 'SugarMeshBox' |