basesink: recompute correct running time for buffer ending flushing step

Prevents delaying/hanging when resuming PLAYING.

Fixes #632433.
This commit is contained in:
Mark Nauwelaerts 2010-10-18 10:46:59 +02:00
parent b0d7c61f18
commit 21c5064783

View file

@ -1889,6 +1889,7 @@ gst_base_sink_get_sync_times (GstBaseSink * basesink, GstMiniObject * obj,
eos = FALSE; eos = FALSE;
again:
/* else do buffer sync code */ /* else do buffer sync code */
buffer = GST_BUFFER_CAST (obj); buffer = GST_BUFFER_CAST (obj);
@ -1978,6 +1979,12 @@ eos_done:
GST_DEBUG_OBJECT (basesink, "flushing step ended"); GST_DEBUG_OBJECT (basesink, "flushing step ended");
stop_stepping (basesink, segment, step, rstart, rstop, eos); stop_stepping (basesink, segment, step, rstart, rstop, eos);
*step_end = FALSE; *step_end = FALSE;
/* re-determine running start times for adjusted segment
* (which has a flushed amount of running/accumulated time removed) */
if (!GST_IS_EVENT (obj)) {
GST_DEBUG_OBJECT (basesink, "refresh sync times");
goto again;
}
} }
/* save times */ /* save times */