tee: Keep another ref to our one and only srcpad around while pushing

A pad probe on that pad might otherwise just release the pad, drop
the last reference and cause great misery.

https://bugzilla.gnome.org/show_bug.cgi?id=721300
This commit is contained in:
Sebastian Dröge 2014-01-02 11:09:59 +01:00
parent d04c8b6d2e
commit e80fd39947

View file

@ -591,6 +591,9 @@ gst_tee_handle_data (GstTee * tee, gpointer data, gboolean is_list)
if (!pads->next) {
GstPad *pad = GST_PAD_CAST (pads->data);
/* Keep another ref around, a pad probe
* might release and destroy the pad */
gst_object_ref (pad);
GST_OBJECT_UNLOCK (tee);
if (pad == tee->pull_pad) {
@ -600,6 +603,9 @@ gst_tee_handle_data (GstTee * tee, gpointer data, gboolean is_list)
} else {
ret = gst_pad_push (pad, GST_BUFFER_CAST (data));
}
gst_object_unref (pad);
return ret;
}