[telepathy-gabble/master] Factor out converting a codec GList to a GPtrArray

Sjoerd Simons sjoerd.simons at collabora.co.uk
Tue Dec 29 05:34:41 PST 2009


---
 src/call-content.c |   50 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/src/call-content.c b/src/call-content.c
index 35ed59e..cc1bc1a 100644
--- a/src/call-content.c
+++ b/src/call-content.c
@@ -44,6 +44,8 @@
 static void call_content_iface_init (gpointer, gpointer);
 static void call_content_media_iface_init (gpointer, gpointer);
 
+static GPtrArray *call_content_codec_list_to_array (GList *codecs);
+
 G_DEFINE_TYPE_WITH_CODE(GabbleCallContent, gabble_call_content,
   G_TYPE_OBJECT,
    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES,
@@ -143,30 +145,15 @@ gabble_call_content_get_property (GObject    *object,
           GList *codecs;
           GHashTable *map;
           GPtrArray *arr;
-          GList *l;
 
           codecs = gabble_jingle_media_rtp_get_local_codecs (
             GABBLE_JINGLE_MEDIA_RTP (priv->content));
 
-          arr = g_ptr_array_sized_new (g_list_length (codecs));
+          arr = call_content_codec_list_to_array (codecs);
 
-          for (l = codecs; l != NULL; l = g_list_next (l))
-            {
-              GValueArray *v;
-              JingleCodec *c = l->data;
-
-              v = gabble_value_array_build (5,
-                G_TYPE_UINT, (guint) c->id,
-                G_TYPE_STRING, c->name,
-                G_TYPE_UINT, c->clockrate,
-                G_TYPE_UINT, c->channels,
-                DBUS_TYPE_G_STRING_STRING_HASHTABLE, c->params,
-                G_TYPE_INVALID);
-
-              g_ptr_array_add (arr, v);
-            }
+          map = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+            NULL, (GDestroyNotify) g_ptr_array_unref);
 
-          map = g_hash_table_new (g_direct_hash, g_direct_equal);
           g_hash_table_insert (map,
             GUINT_TO_POINTER (TP_BASE_CONNECTION (priv->conn)->self_handle),
             arr);
@@ -414,3 +401,30 @@ gabble_call_content_get_object_path (GabbleCallContent *content)
 {
   return content->priv->object_path;
 }
+
+static GPtrArray *
+call_content_codec_list_to_array (GList *codecs)
+{
+  GPtrArray *arr;
+  GList *l;
+
+  arr = g_ptr_array_sized_new (g_list_length (codecs));
+
+  for (l = codecs; l != NULL; l = g_list_next (l))
+    {
+      GValueArray *v;
+      JingleCodec *c = l->data;
+
+      v = gabble_value_array_build (5,
+        G_TYPE_UINT, (guint) c->id,
+        G_TYPE_STRING, c->name,
+        G_TYPE_UINT, c->clockrate,
+        G_TYPE_UINT, c->channels,
+        DBUS_TYPE_G_STRING_STRING_HASHTABLE, c->params,
+        G_TYPE_INVALID);
+
+        g_ptr_array_add (arr, v);
+    }
+
+  return arr;
+}
-- 
1.5.6.5




More information about the telepathy-commits mailing list