[Telepathy-commits] [telepathy-salut/master] tubes-manager: factor out tubes_capabilities_new

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Thu Feb 26 11:20:24 PST 2009


---
 src/salut-tubes-manager.c |   51 ++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index a855f41..87c14c0 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -130,17 +130,31 @@ const Feature tube_feature = {
 };
 
 static void
-free_feat (gpointer data)
+feature_free (gpointer feat)
 {
-  Feature *feat = (Feature *) data;
+  Feature *feature = (Feature *) feat;
 
-  if (feat == NULL)
+  if (feature == NULL)
     return;
 
-  if (feat->ns != NULL)
-    g_free (feat->ns);
+   if (feature->ns != NULL)
+      g_free (feature->ns);
 
-  g_free (feat);
+  g_slice_free (Feature, feature);
+}
+
+static TubesCapabilities *
+tubes_capabilities_new (void)
+{
+  TubesCapabilities *caps;
+
+  caps = g_slice_new (TubesCapabilities);
+  caps->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
+      g_free, feature_free);
+  caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
+      g_free, feature_free);
+
+  return caps;
 }
 
 static void
@@ -1285,12 +1299,7 @@ salut_tubes_manager_parse_caps (
 {
   TubesCapabilities *caps;
 
-  caps = g_new0 (TubesCapabilities, 1);
-  caps->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-      g_free, free_feat);
-  caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-      g_free, free_feat);
-
+  caps = tubes_capabilities_new ();
   gibber_xmpp_node_each_child (node, _parse_caps_item, caps);
 
   return caps;
@@ -1323,15 +1332,11 @@ salut_tubes_manager_copy_caps (
     gpointer specific_caps_in)
 {
   TubesCapabilities *caps_in = specific_caps_in;
-  TubesCapabilities *caps_out = g_new0 (TubesCapabilities, 1);
+  TubesCapabilities *caps_out = tubes_capabilities_new ();
 
-  caps_out->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-      g_free, free_feat);
   g_hash_table_foreach (caps_in->stream_tube_caps, copy_caps_helper,
       caps_out->stream_tube_caps);
 
-  caps_out->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-      g_free, free_feat);
   g_hash_table_foreach (caps_in->dbus_tube_caps, copy_caps_helper,
       caps_out->dbus_tube_caps);
 
@@ -1413,12 +1418,6 @@ salut_tubes_manager_caps_diff (
 }
 
 static void
-free_feature (gpointer feature)
-{
-  g_slice_free (Feature, feature);
-}
-
-static void
 salut_tubes_manager_add_cap (SalutCapsChannelManager *manager,
                              SalutConnection *conn,
                              TpHandle handle,
@@ -1471,11 +1470,7 @@ salut_tubes_manager_add_cap (SalutCapsChannelManager *manager,
   caps = g_hash_table_lookup (*per_channel_manager_caps, manager);
   if (caps == NULL)
     {
-      caps = g_slice_new (TubesCapabilities);
-      caps->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-          free_feature, free_feature);
-      caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
-          g_free, free_feature);
+      caps = tubes_capabilities_new ();
       g_hash_table_insert (*per_channel_manager_caps, manager, caps);
     }
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list