tee: Properly handle return value when only 1 pad

This patch handle the case when you have 1 pad (so the fast path is
being used) but this pad is removed. If we are in allow-not-linked, we
should return GST_FLOW_OK, otherwise, we should return GST_FLOW_UNLINKED
and ignore the meaningless return value obtained from pushing.

https://bugzilla.gnome.org/show_bug.cgi?id=767413
This commit is contained in:
Nicolas Dufresne 2016-06-08 12:34:53 -04:00 committed by Sebastian Dröge
parent ba536c2307
commit 046551105b

View file

@ -656,12 +656,15 @@ gst_tee_handle_data (GstTee * tee, gpointer data, gboolean is_list)
ret = gst_pad_push (pad, GST_BUFFER_CAST (data)); ret = gst_pad_push (pad, GST_BUFFER_CAST (data));
} }
gst_object_unref (pad); if (GST_TEE_PAD_CAST (pad)->removed)
ret = GST_FLOW_NOT_LINKED;
if (ret == GST_FLOW_NOT_LINKED && tee->allow_not_linked) { if (ret == GST_FLOW_NOT_LINKED && tee->allow_not_linked) {
ret = GST_FLOW_OK; ret = GST_FLOW_OK;
} }
gst_object_unref (pad);
return ret; return ret;
} }