diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-18 10:46:59 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-20 18:46:39 +0200 |
commit | 21c50647836d3ed48f4bcf748fe2f543186ea718 (patch) | |
tree | 259ea1f1121d791911924870b71e41759c2781bc | |
parent | b0d7c61f180064b0e5e78d0ae33c6bb856548c51 (diff) |
basesink: recompute correct running time for buffer ending flushing step
Prevents delaying/hanging when resuming PLAYING.
Fixes #632433.
-rw-r--r-- | libs/gst/base/gstbasesink.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 768f7c948..951940e12 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -1889,6 +1889,7 @@ gst_base_sink_get_sync_times (GstBaseSink * basesink, GstMiniObject * obj, eos = FALSE; +again: /* else do buffer sync code */ buffer = GST_BUFFER_CAST (obj); @@ -1978,6 +1979,12 @@ eos_done: GST_DEBUG_OBJECT (basesink, "flushing step ended"); stop_stepping (basesink, segment, step, rstart, rstop, eos); *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 */ |