oggdemux: fix wedge when seeking twice quickly in push mode

This could happen when testing with navseek, and pressing
right and left at roughly the same time. The current chain
is temporarily moved away, and this caused the flush events
not to be sent to the source pads, which would cause the
data queues downstream to reject incoming data after the
seek, and shut down, wedging the pipeline.

Now, I can't really decide whether this is a nasty steaming
hack or a good fix, but it certainly does fix the issue, and
does not seem to break anything else so far.

https://bugzilla.gnome.org/show_bug.cgi?id=621897
This commit is contained in:
Vincent Penquerc'h 2011-09-14 12:23:19 +01:00 committed by Tim-Philipp Müller
parent 0173afa38c
commit 89fc5b4bd8

View file

@ -3982,6 +3982,9 @@ gst_ogg_demux_send_event (GstOggDemux * ogg, GstEvent * event)
GstOggChain *chain = ogg->current_chain;
gboolean res = TRUE;
if (!chain)
chain = ogg->building_chain;
if (chain) {
gint i;
@ -3992,6 +3995,8 @@ gst_ogg_demux_send_event (GstOggDemux * ogg, GstEvent * event)
GST_DEBUG_OBJECT (pad, "Pushing event %" GST_PTR_FORMAT, event);
res &= gst_pad_push_event (GST_PAD (pad), event);
}
} else {
GST_WARNING_OBJECT (ogg, "No chain to forward event to");
}
gst_event_unref (event);