summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2010-10-18 10:46:59 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2010-10-20 18:46:39 +0200
commit21c50647836d3ed48f4bcf748fe2f543186ea718 (patch)
tree259ea1f1121d791911924870b71e41759c2781bc
parentb0d7c61f180064b0e5e78d0ae33c6bb856548c51 (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.c7
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 */