typefind: Only push a CAPS event downstream if the sinkpad is not in PULL mode

The other signal handlers of the type-found signal might have reactivated
typefind in PULL mode already, pushing a CAPS event at that point would cause
deadlocks and is in general unexpected by elements that are in PULL mode.

https://bugzilla.gnome.org/show_bug.cgi?id=765906
This commit is contained in:
Sebastian Dröge 2016-05-11 15:06:39 +03:00
parent 7eb494257c
commit 1592f5354b

View file

@ -179,6 +179,10 @@ gst_type_find_element_have_type (GstTypeFindElement * typefind,
GST_INFO_OBJECT (typefind, "found caps %" GST_PTR_FORMAT ", probability=%u",
caps, probability);
/* Do nothing if downstream is pulling from us */
if (GST_PAD_MODE (typefind->src) == GST_PAD_MODE_PULL)
return;
GST_OBJECT_LOCK (typefind);
/* Now actually send the CAPS event downstream.