basesink: fix once-per-second 'emergency rendering' for case where all buffers but...
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 23 Mar 2009 12:34:34 +0000 (12:34 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 23 Mar 2009 12:34:34 +0000 (12:34 +0000)
Due to a typo basesink didn't do any emergency rendering of late buffers
if the only buffer ever rendered was the first one with timestamp 0. This
means that in cases where the decoder is very very slow, we'd never see
any buffers but the very first one rendered. Fixes #576381.

libs/gst/base/gstbasesink.c

index 35f0c75..67f90df 100644 (file)
@@ -2232,7 +2232,7 @@ gst_base_sink_is_too_late (GstBaseSink * basesink, GstMiniObject * obj,
         GST_TIME_ARGS (max_lateness));
     /* !!emergency!!, if we did not receive anything valid for more than a 
      * second, render it anyway so the user sees something */
-    if (priv->last_in_time && start - priv->last_in_time > GST_SECOND) {
+    if (priv->last_in_time != -1 && start - priv->last_in_time > GST_SECOND) {
       late = FALSE;
       GST_DEBUG_OBJECT (basesink,
           "**emergency** last buffer at %" GST_TIME_FORMAT " > GST_SECOND",