rtpmux: deal with all the gst_iterator_next() return values

20070528122808-f3f1e-d301644c3be7633ec6dc5e28596e9346d2da6a50.gz
This commit is contained in:
Zeeshan Ali 2007-05-28 12:28:08 +00:00 committed by Tim-Philipp Müller
parent de40874670
commit baa48dc6bc

View file

@ -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);