diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-12-05 11:01:45 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-12-05 11:01:45 +0200 |
commit | e02405b2847f144a491ace8dae1b2d93e208a459 (patch) | |
tree | 172c03c0ca8e973bbc5b1ab7320665a1d2cf0c0f /plugins | |
parent | 788c0d220a65175411cb0e510df2df54c6941c81 (diff) |
elements: Handle GstIterator RESYNC return value correctly in gst_iterator_foreach()
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/elements/gstconcat.c | 16 | ||||
-rw-r--r-- | plugins/elements/gsttee.c | 6 |
2 files changed, 12 insertions, 10 deletions
diff --git a/plugins/elements/gstconcat.c b/plugins/elements/gstconcat.c index 865b41c95..788cc9c78 100644 --- a/plugins/elements/gstconcat.c +++ b/plugins/elements/gstconcat.c @@ -800,10 +800,10 @@ gst_concat_change_state (GstElement * element, GstStateChange transition) self->current_start_offset = 0; self->last_stop = GST_CLOCK_TIME_NONE; - do { - res = gst_iterator_foreach (iter, reset_pad, NULL); - } while (res == GST_ITERATOR_RESYNC); - + while ((res = + gst_iterator_foreach (iter, reset_pad, + NULL)) == GST_ITERATOR_RESYNC) + gst_iterator_resync (iter); gst_iterator_free (iter); if (res == GST_ITERATOR_ERROR) @@ -815,10 +815,10 @@ gst_concat_change_state (GstElement * element, GstStateChange transition) GstIteratorResult res; g_mutex_lock (&self->lock); - do { - res = gst_iterator_foreach (iter, unblock_pad, NULL); - } while (res == GST_ITERATOR_RESYNC); - + while ((res = + gst_iterator_foreach (iter, unblock_pad, + NULL)) == GST_ITERATOR_RESYNC) + gst_iterator_resync (iter); gst_iterator_free (iter); g_cond_broadcast (&self->cond); g_mutex_unlock (&self->lock); diff --git a/plugins/elements/gsttee.c b/plugins/elements/gsttee.c index 906775d2a..2369814bd 100644 --- a/plugins/elements/gsttee.c +++ b/plugins/elements/gsttee.c @@ -971,8 +971,10 @@ gst_tee_pull_eos (GstTee * tee) GstIterator *iter; iter = gst_element_iterate_src_pads (GST_ELEMENT (tee)); - gst_iterator_foreach (iter, (GstIteratorForeachFunction) gst_tee_push_eos, - tee); + while (gst_iterator_foreach (iter, + (GstIteratorForeachFunction) gst_tee_push_eos, + tee) == GST_ITERATOR_RESYNC) + gst_iterator_resync (iter); gst_iterator_free (iter); } |