inputselector: Wake other pads when selected goes EOS
authorJan Schmidt <jan@centricular.com>
Mon, 25 Jul 2016 09:15:15 +0000 (19:15 +1000)
committerJan Schmidt <jan@centricular.com>
Mon, 25 Jul 2016 09:34:52 +0000 (19:34 +1000)
Other pads that are waiting for the stream on the selected
pad to advance before they finish waiting themselves
should be given the chance to do so when the selected pad
goes EOS. Fixes problems where input streams can end up
waiting forever if the active stream goes EOS earlier than
their own end time.

plugins/elements/gstinputselector.c

index a0889a4..4af2190 100644 (file)
@@ -477,6 +477,10 @@ gst_input_selector_eos_wait (GstInputSelector * self, GstSelectorPad * pad,
 
       gst_pad_push_event (self->srcpad, gst_event_ref (eos_event));
       GST_INPUT_SELECTOR_LOCK (self);
+      /* Wake up other pads so they can continue when syncing to
+       * running time, as this pad just switched to EOS and
+       * may enable others to progress */
+      GST_INPUT_SELECTOR_BROADCAST (self);
       pad->eos_sent = TRUE;
     } else {
       /* we can be unlocked here when we are shutting down (flushing) or when we