Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/presence
diff options
context:
space:
mode:
authorDan Williams <dcbw@localhost.localdomain>2006-09-19 17:54:32 (GMT)
committer Dan Williams <dcbw@localhost.localdomain>2006-09-19 17:54:32 (GMT)
commitd0f23744f05d1c91c50ec41938c25919179feb9a (patch)
tree42fbe25d3554770f6f7ebbc39c7db248d8135717 /sugar/presence
parentb6897cf1c59d27cdd6bc32f273af3533959556b2 (diff)
Use asynchronous service resolution to capture service updates too
Diffstat (limited to 'sugar/presence')
-rw-r--r--sugar/presence/Service.py29
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']