From: Sebastian Dröge Date: Thu, 8 Jul 2010 05:48:07 +0000 (+0200) Subject: pipeline: If the currently used clock gets lost update it the next time when going... X-Git-Tag: RELEASE-0.10.31~293 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9d0e2e7252398c660c33c79256333f76a6d97dd0;p=platform%2Fupstream%2Fgstreamer.git pipeline: If the currently used clock gets lost update it the next time when going from PAUSED to playing Fixes bug #623806. --- diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c index 73c8f99..8f5d381 100644 --- a/gst/gstpipeline.c +++ b/gst/gstpipeline.c @@ -401,7 +401,7 @@ gst_pipeline_change_state (GstElement * element, GstStateChange transition) /* running time changed, either with a PAUSED or a flush, we need to check * if there is a new clock & update the base time */ - if (last_start_time != start_time) { + if (update_clock || last_start_time != start_time) { GST_DEBUG_OBJECT (pipeline, "Need to update start_time"); /* when going to PLAYING, select a clock when needed. If we just got @@ -560,6 +560,20 @@ gst_pipeline_handle_message (GstBin * bin, GstMessage * message) break; } + case GST_MESSAGE_CLOCK_LOST: + { + GstClock *clock; + + gst_message_parse_clock_lost (message, &clock); + + GST_OBJECT_LOCK (bin); + if (clock == GST_ELEMENT_CAST (bin)->clock) { + GST_DEBUG_OBJECT (bin, "Used clock '%s' got lost", + GST_OBJECT_NAME (clock)); + pipeline->priv->update_clock = TRUE; + } + GST_OBJECT_UNLOCK (bin); + } default: break; }