diff options
author | Dan Williams <dcbw@localhost.localdomain> | 2006-09-19 17:54:32 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@localhost.localdomain> | 2006-09-19 17:54:32 (GMT) |
commit | d0f23744f05d1c91c50ec41938c25919179feb9a (patch) | |
tree | 42fbe25d3554770f6f7ebbc39c7db248d8135717 /sugar/presence | |
parent | b6897cf1c59d27cdd6bc32f273af3533959556b2 (diff) |
Use asynchronous service resolution to capture service updates too
Diffstat (limited to 'sugar/presence')
-rw-r--r-- | sugar/presence/Service.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/sugar/presence/Service.py b/sugar/presence/Service.py index 01169e4..815d0d7 100644 --- a/sugar/presence/Service.py +++ b/sugar/presence/Service.py @@ -2,18 +2,22 @@ import gobject import dbus -def __one_dict_differs(dict1, dict2): +def _one_dict_differs(dict1, dict2): + diff_keys = [] for key, value in dict1.items(): if not dict2.has_key(key) or dict2[key] != value: - return True - return False - -def __dicts_differ(dict1, dict2): - if __one_dict_differs(dict1, dict2): - return True - if __one_dict_differs(dict2, dict1): - return True - return False + diff_keys.append(key) + return diff_keys + +def _dicts_differ(dict1, dict2): + diff_keys = [] + diff1 = _one_dict_differs(dict1, dict2) + diff2 = _one_dict_differs(dict2, dict1) + for key in diff2: + if key not in diff1: + diff_keys.append(key) + diff_keys += diff1 + return diff_keys class Service(gobject.GObject): @@ -64,8 +68,9 @@ class Service(gobject.GObject): def __published_value_changed_cb(self, keys): oldvals = self._pubvals self.get_published_values() - if __dicts_differ(oldvals, self._pubvals): - self.emit('published-value-changed', keys) + diff_keys = _dicts_differ(oldvals, self._pubvals) + if len(diff_keys) > 0: + self.emit('published-value-changed', diff_keys) def get_name(self): return self._props['name'] |