From baa48dc6bc37db5d4e088006e3c47599376cc40e Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Mon, 28 May 2007 12:28:08 +0000 Subject: [PATCH] rtpmux: deal with all the gst_iterator_next() return values 20070528122808-f3f1e-d301644c3be7633ec6dc5e28596e9346d2da6a50.gz --- gst/rtpmanager/gstrtpmux.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/gst/rtpmanager/gstrtpmux.c b/gst/rtpmanager/gstrtpmux.c index 6d039a3..e5300ae 100644 --- a/gst/rtpmanager/gstrtpmux.c +++ b/gst/rtpmanager/gstrtpmux.c @@ -188,18 +188,30 @@ static gboolean gst_rtp_mux_src_event (GstPad * pad, GstIterator *iter; GstPad *sinkpad; gboolean result = FALSE; + gboolean done = FALSE; rtp_mux = gst_pad_get_parent_element (pad); g_return_val_if_fail (rtp_mux != NULL, FALSE); iter = gst_element_iterate_sink_pads (rtp_mux); - while (gst_iterator_next (iter, (gpointer) &sinkpad) == GST_ITERATOR_OK) { - gst_event_ref (event); - result = gst_pad_push_event (sinkpad, event); - gst_object_unref (sinkpad); - if (result) - break; + while (!done) { + switch (gst_iterator_next (iter, (gpointer) &sinkpad)) { + case GST_ITERATOR_OK: + gst_event_ref (event); + result = gst_pad_push_event (sinkpad, event); + gst_object_unref (sinkpad); + if (result) + done = TRUE; + break; + case GST_ITERATOR_RESYNC: + gst_iterator_resync (iter); + break; + case GST_ITERATOR_ERROR: + case GST_ITERATOR_DONE: + done = TRUE; + break; + } } gst_event_unref (event); -- 2.7.4