[telepathy-gabble/master] Optionally return save_set from gabble_connection_refresh_capabilities
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Aug 26 11:48:36 PDT 2009
This avoids the other callers having to save our own caps too.
---
src/connection.c | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/connection.c b/src/connection.c
index 520db69..481e587 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -1593,7 +1593,8 @@ _gabble_connection_signal_own_presence (GabbleConnection *self, GError **error)
}
static gboolean
-gabble_connection_refresh_capabilities (GabbleConnection *self)
+gabble_connection_refresh_capabilities (GabbleConnection *self,
+ GabbleCapabilitySet **old_out)
{
TpBaseConnection *base = (TpBaseConnection *) self;
GError *error = NULL;
@@ -1652,7 +1653,11 @@ gabble_connection_refresh_capabilities (GabbleConnection *self)
return FALSE;
}
- gabble_capability_set_free (save_set);
+ if (old_out == NULL)
+ gabble_capability_set_free (save_set);
+ else
+ *old_out = save_set;
+
return TRUE;
}
@@ -2211,7 +2216,7 @@ connection_auth_cb (LmConnection *lmconn,
GABBLE_PRESENCE_AVAILABLE, NULL, priv->priority);
/* set initial capabilities */
- gabble_connection_refresh_capabilities (conn);
+ gabble_connection_refresh_capabilities (conn, NULL);
if (!gabble_disco_request_with_timeout (conn->disco, GABBLE_DISCO_TYPE_INFO,
priv->stream_server, NULL,
@@ -2564,8 +2569,6 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
ccd->tf2c_fn (~0, remove_set);
}
- save_set = gabble_capability_set_copy (priv->all_caps);
-
gabble_capability_set_update (priv->legacy_caps, add_set);
gabble_capability_set_exclude (priv->legacy_caps, remove_set);
@@ -2583,10 +2586,11 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
gabble_capability_set_free (add_set);
gabble_capability_set_free (remove_set);
- if (gabble_connection_refresh_capabilities (self))
+ if (gabble_connection_refresh_capabilities (self, &save_set))
{
_emit_capabilities_changed (self, base->self_handle, save_set,
priv->all_caps);
+ gabble_capability_set_free (save_set);
}
ret = g_ptr_array_new ();
@@ -2613,8 +2617,6 @@ gabble_connection_advertise_capabilities (TpSvcConnectionInterfaceCapabilities *
}
}
- gabble_capability_set_free (save_set);
-
tp_svc_connection_interface_capabilities_return_from_advertise_capabilities (
context, ret);
g_ptr_array_free (ret, TRUE);
@@ -2700,16 +2702,15 @@ gabble_connection_update_capabilities (
}
}
- if (gabble_connection_refresh_capabilities (self))
+ if (gabble_connection_refresh_capabilities (self, &old_caps))
{
_emit_capabilities_changed (self, base->self_handle, old_caps,
self->priv->all_caps);
+ gabble_capability_set_free (old_caps);
}
gabble_svc_connection_interface_contact_capabilities_return_from_update_capabilities (
context);
-
- gabble_capability_set_free (old_caps);
}
static const gchar *assumed_caps[] =
@@ -3368,7 +3369,7 @@ gabble_connection_ensure_capabilities (GabbleConnection *self,
const GabbleCapabilitySet *ensured)
{
gabble_capability_set_update (self->priv->notify_caps, ensured);
- gabble_connection_refresh_capabilities (self);
+ gabble_connection_refresh_capabilities (self, NULL);
}
gboolean
--
1.5.6.5
More information about the telepathy-commits
mailing list