Commit d03bd547 authored by Stian Selnes's avatar Stian Selnes Committed by Sebastian Dröge

queue: Fix race when calculating cur_level.time

On the first buffer, it's possible that sink_segment is set but
src_segment has not been set yet. If this is the case, we should not
calculate cur_level.time since sink_segment.position may be large and
src_segment.position default is 0, with the resulting diff being larger
than max-size-time, causing the queue to start leaking (if

One potential consequence of this is that the segment event may be
stored on the srcpad before the caps event is pushed downstream, causing
a g_warning ("Sticky event misordering, got 'segment' before 'caps'").
parent 556c540e
......@@ -546,7 +546,7 @@ update_time_level (GstQueue * queue)
GST_STIME_ARGS (sink_time), GST_STIME_ARGS (src_time));
if (sink_time >= src_time)
if (sink_time >= src_time && queue->newseg_applied_to_src)
queue->cur_level.time = sink_time - src_time;
queue->cur_level.time = 0;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment