diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-05-27 12:50:22 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-05-27 14:57:29 +0200 |
commit | aa8b8b57d78808b88229db115896cae69ef7ec3a (patch) | |
tree | 4ac680fd43811d8f03dc3262a29345db3d925b36 | |
parent | 7479b64a2a1eeac90b8433d7a707448caf86dfcb (diff) |
adapter: fix _try_to_merge_up
That is, provide correct return value (as documented), and actually
loop to consider more than the first 2 buffers.
-rw-r--r-- | libs/gst/base/gstadapter.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c index 748a812c60..860f88cb51 100644 --- a/libs/gst/base/gstadapter.c +++ b/libs/gst/base/gstadapter.c @@ -321,6 +321,7 @@ gst_adapter_try_to_merge_up (GstAdapter * adapter, guint size) { GstBuffer *cur, *head; GSList *g; + gboolean ret = FALSE; g = adapter->buflist; if (g == NULL) @@ -336,7 +337,7 @@ gst_adapter_try_to_merge_up (GstAdapter * adapter, guint size) while (g != NULL && GST_BUFFER_SIZE (head) < size) { cur = g->data; if (!gst_buffer_is_span_fast (head, cur)) - return TRUE; + return ret; /* Merge the head buffer and the next in line */ GST_LOG_OBJECT (adapter, @@ -344,14 +345,17 @@ gst_adapter_try_to_merge_up (GstAdapter * adapter, guint size) GST_BUFFER_SIZE (head), GST_BUFFER_SIZE (cur), size); head = gst_buffer_join (head, cur); + ret = TRUE; /* Delete the front list item, and store our new buffer in the 2nd list * item */ adapter->buflist = g_slist_delete_link (adapter->buflist, adapter->buflist); g->data = head; + + g = g_slist_next (g); } - return FALSE; + return ret; } /** |