def _watch_dbus(self, obj, *args, **kw): ''' set self._handler to be called when obj fire signal wrapped ''' def handler(*args, **kw): if self.meth is not self._handler: DbusInterface.store_result(obj, self.meth(obj, *args, **kw)) return self._handler(self._obj, *args, **kw) if self.iface: bus_iface = DbusInterface.iface(obj, self.iface) bus_iface.connect_to_signal(self.meth.__name__, handler, dbus_interface=self.iface, *args, **kw) else: bus_obj = DbusInterface.get_bus_obj(obj) bus_obj.connect_to_signal(self.meth.__name__, handler, dbus_interface=DbusInterface.get_bus_iface(obj), *args, **kw)