/* Errors in sticky event pushing are no problem and ignored here
* as they will cause more meaningful errors during data flow.
* For EOS events, that are not followed by data flow, we still
- * return FALSE here though.
+ * return FALSE here though and report an error.
*/
- if (!GST_EVENT_IS_STICKY (event) ||
- GST_EVENT_TYPE (event) == GST_EVENT_EOS)
+ if (!GST_EVENT_IS_STICKY (event)) {
goto out_flow_error;
+ } else if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+ if (queue->srcresult == GST_FLOW_NOT_LINKED
+ || queue->srcresult < GST_FLOW_EOS) {
+ GST_ELEMENT_ERROR (queue, STREAM, FAILED,
+ (_("Internal data flow error.")),
+ ("streaming task paused, reason %s (%d)",
+ gst_flow_get_name (queue->srcresult), queue->srcresult));
+ }
+ goto out_flow_error;
+ }
}
/* refuse more events on EOS */
if (queue->eos)