libs/gst/base/gstbasesink.c: Don't send an async_start message during downwards state...
authorPhilippe Kalaf <philippe.kalaf@collabora.co.uk>
Thu, 9 Aug 2007 21:50:19 +0000 (21:50 +0000)
committerPhilippe Kalaf <philippe.kalaf@collabora.co.uk>
Thu, 9 Aug 2007 21:50:19 +0000 (21:50 +0000)
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
Don't send an async_start message during downwards state change if target
state is less than READY

ChangeLog
libs/gst/base/gstbasesink.c

index f56a68e..40805ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-09  Philippe Kalaf <philippe.kalaf@collabora.co.uk>
+
+       * libs/gst/base/gstbasesink.c:
+               Don't send an async_start message during downwards state change if target
+               state is less than READY
+
 2007-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>
 
        translated by: Gabor Kelemen <kelemeng@gnome.hu>
index 9489ec2..4031191 100644 (file)
@@ -2923,12 +2923,16 @@ gst_base_sink_change_state (GstElement * element, GstStateChange transition)
         GST_DEBUG_OBJECT (basesink, "PLAYING to PAUSED, we are prerolled");
         basesink->playing_async = FALSE;
       } else {
-        GST_DEBUG_OBJECT (basesink, "PLAYING to PAUSED, need preroll");
-        basesink->playing_async = TRUE;
-        basesink->priv->commited = FALSE;
-        ret = GST_STATE_CHANGE_ASYNC;
-        gst_element_post_message (GST_ELEMENT_CAST (basesink),
-            gst_message_new_async_start (GST_OBJECT_CAST (basesink), FALSE));
+        if (GST_STATE_TARGET (GST_ELEMENT (basesink)) <= GST_STATE_READY) {
+          ret = GST_STATE_CHANGE_SUCCESS;
+        } else {
+          GST_DEBUG_OBJECT (basesink, "PLAYING to PAUSED, need preroll");
+          basesink->playing_async = TRUE;
+          basesink->priv->commited = FALSE;
+          ret = GST_STATE_CHANGE_ASYNC;
+          gst_element_post_message (GST_ELEMENT_CAST (basesink),
+              gst_message_new_async_start (GST_OBJECT_CAST (basesink), FALSE));
+        }
       }
       GST_DEBUG_OBJECT (basesink, "rendered: %" G_GUINT64_FORMAT
           ", dropped: %" G_GUINT64_FORMAT, basesink->priv->rendered,