adapter: simplify gst_adapter_take_list()
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 Nov 2011 14:17:21 +0000 (14:17 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 Nov 2011 14:17:21 +0000 (14:17 +0000)
Use a stack-allocated GQueue to assemble our GList.

libs/gst/base/gstadapter.c

index 75944a9..0f8053d 100644 (file)
@@ -737,7 +737,7 @@ done:
 GList *
 gst_adapter_take_list (GstAdapter * adapter, guint nbytes)
 {
-  GList *result = NULL, *tail = NULL;
+  GQueue queue = G_QUEUE_INIT;
   GstBuffer *cur;
   guint hsize, skip;
 
@@ -753,15 +753,11 @@ gst_adapter_take_list (GstAdapter * adapter, guint nbytes)
 
     cur = gst_adapter_take_buffer (adapter, hsize);
 
-    if (result == NULL) {
-      result = tail = g_list_append (result, cur);
-    } else {
-      tail = g_list_append (tail, cur);
-      tail = g_list_next (tail);
-    }
+    g_queue_push_tail (&queue, cur);
+
     nbytes -= hsize;
   }
-  return result;
+  return queue.head;
 }
 
 /**