parsebin: Ignore failure to send sticky events
authorJan Schmidt <jan@centricular.com>
Tue, 20 Dec 2016 13:11:06 +0000 (00:11 +1100)
committerJan Schmidt <jan@centricular.com>
Tue, 20 Dec 2016 13:44:45 +0000 (00:44 +1100)
When plugging and then exposing a parser, don't fail
if it fails to send sticky events. The most likely
reason is that things were flushed due to the app
immediately doing a seek, but we can't detect flushing
separately to other error conditions without a
gst_pad_send_event_full() core function that returns
a GstFlowReturn.

gst/playback/gstparsebin.c

index a33ae00..c0fdf89 100644 (file)
@@ -2102,8 +2102,7 @@ connect_pad (GstParseBin * parsebin, GstElement * src, GstParsePad * parsepad,
     GST_PAD_STREAM_LOCK (sinkpad);
 
     if ((gst_element_set_state (element,
-                GST_STATE_PAUSED)) == GST_STATE_CHANGE_FAILURE ||
-        !send_sticky_events (parsebin, pad)) {
+                GST_STATE_PAUSED)) == GST_STATE_CHANGE_FAILURE) {
       GstParseElement *dtmp = NULL;
       GstElement *tmp = NULL;
       GstMessage *error_msg;
@@ -2183,6 +2182,7 @@ connect_pad (GstParseBin * parsebin, GstElement * src, GstParsePad * parsepad,
 
       continue;
     } else {
+      send_sticky_events (parsebin, pad);
       /* Everything went well, the spice must flow now */
       GST_PAD_STREAM_UNLOCK (sinkpad);
     }