From: <mn...@ke...> - 2010-05-27 13:11:32
|
Module: gstreamer Branch: master Commit: aa8b8b57d78808b88229db115896cae69ef7ec3a URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=aa8b8b57d78808b88229db115896cae69ef7ec3a Author: Mark Nauwelaerts <mar...@co...> Date: Thu May 27 12:50:22 2010 +0200 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. --- 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 748a812..860f88c 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; } /** |