Event errors ignored, even if caused by dataflow errors
@slomo
Submitted by Sebastian Dröge Link to original bug (#677340)
Description
Consider the following pipeline:
audiotestsrc num-buffers=1 ! vorbisenc ! vorbisdec ! sink
vorbisdec will only push buffers to the sink as a result of the EOS event sent downstream from audiotestsrc and vorbisenc. So all gst_pad_push() in vorbisenc and audiotestsrc will always see GST_FLOW_OK.
If the pushing of data in vorbisdec (remember: triggered by the EOS event) now fails audiotestsrc (the element driving the pipeline and the element that should post error messages on the bus if pushing data fails) can't post an error message on the bus as the return values of event pushing does do not contain enough information to decide if an (and which) error happened. Thus the pipeline silently fails and goes into EOS state without any error messages on the bus (note: this requires 0ca7b85e, without this the pipeline just waits for EOS forever).
This could be solved by handling data-pushing-caused-by-EOS as a special case, and requiring elements to post error messages themselves on the bus in that case (instead of letting it handled by the element driving the pipeline as usual). Or we need flow returns for events.