streamsynchronizer: Ignore flushing streams [..]

[..] when resetting group start time. In GES, we are usually connected
to the streamsynchronizer on one audio and one video pad.

When seeking the timeline, both nlecompositions often output their flush_start
before any of them has output its flush_stop.

The current code, when receiving the first flush stop was using the
running time of the start of the second composition, which could
be pretty much anything, and means nothing at that point.

This patch is thread-safe, as STREAM_SYNCHRONIZER_LOCK is taken
both when setting flushing and when checking it.

https://bugzilla.gnome.org/show_bug.cgi?id=750013
This commit is contained in:
Mathieu Duponchelle 2016-01-09 04:35:23 +01:00 committed by Sebastian Dröge
parent fccf83e69f
commit 2717f4a86f

View file

@ -493,7 +493,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
GstSyncStream *ostream = l->data; GstSyncStream *ostream = l->data;
GstClockTime start_running_time; GstClockTime start_running_time;
if (ostream == stream) if (ostream == stream || ostream->flushing)
continue; continue;
if (ostream->segment.format == GST_FORMAT_TIME) { if (ostream->segment.format == GST_FORMAT_TIME) {