[telepathy-gabble/master] GabbleConnection: _emit_capabilities_changed: take the new-style caps and parse them

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Sep 8 04:10:12 PDT 2009


---
 src/connection.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/connection.c b/src/connection.c
index 127b980..5c857bf 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -2274,12 +2274,14 @@ ERROR:
 static void
 _emit_capabilities_changed (GabbleConnection *conn,
                             TpHandle handle,
-                            GabblePresenceCapabilities old_caps,
-                            GabblePresenceCapabilities new_caps)
+                            const GabbleCapabilitySet *old_set,
+                            const GabbleCapabilitySet *new_set)
 {
   GPtrArray *caps_arr;
   const CapabilityConversionData *ccd;
   guint i;
+  GabblePresenceCapabilities old_caps = capabilities_parse (old_set);
+  GabblePresenceCapabilities new_caps = capabilities_parse (new_set);
 
   if (old_caps == new_caps)
     return;
@@ -2426,9 +2428,7 @@ connection_capabilities_update_cb (GabblePresenceCache *cache,
 {
   GabbleConnection *conn = GABBLE_CONNECTION (user_data);
 
-  if (old_caps != new_caps)
-    _emit_capabilities_changed (conn, handle, old_caps, new_caps);
-
+  _emit_capabilities_changed (conn, handle, old_cap_set, new_cap_set);
   _emit_contact_capabilities_changed (conn, handle, old_cap_set, new_cap_set);
 }
 
@@ -2459,6 +2459,7 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
   const CapabilityConversionData *ccd;
   GPtrArray *ret;
   GabbleCapabilitySet *cap_set;
+  GabbleCapabilitySet *save_set;
   GError *error = NULL;
 
   TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -2494,6 +2495,7 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
     }
 
   save_caps = caps = pres->caps;
+  save_set = gabble_presence_get_caps (pres);
 
   caps |= add_caps;
   caps ^= (caps & remove_caps);
@@ -2544,9 +2546,13 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
           return;
         }
 
-      _emit_capabilities_changed (self, base->self_handle, save_caps, caps);
+      cap_set = gabble_capability_set_new_from_flags (caps);
+      _emit_capabilities_changed (self, base->self_handle, save_set, cap_set);
+      gabble_capability_set_free (cap_set);
     }
 
+  gabble_capability_set_free (save_set);
+
   tp_svc_connection_interface_capabilities_return_from_advertise_capabilities (
       context, ret);
   g_ptr_array_free (ret, TRUE);
-- 
1.5.6.5




More information about the telepathy-commits mailing list