bin: never skip a state change to PLAYING
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 11 Dec 2009 15:26:00 +0000 (16:26 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 11 Dec 2009 15:26:00 +0000 (16:26 +0100)
Never skip the state change to playing, even if the element is already in the
right state. We need this because we also distribute the base_time while doing
the state change and skipping this step would leave some elements without a new
base_time.

Fixes #600313

gst/gstbin.c

index cef35b9..039aca1 100644 (file)
@@ -2073,7 +2073,7 @@ gst_bin_element_set_state (GstBin * bin, GstElement * element,
 
   /* Try not to change the state of elements that are already in the state we're
    * going to */
-  if (!(child_pending != GST_STATE_VOID_PENDING ||
+  if (!(next == GST_STATE_PLAYING || child_pending != GST_STATE_VOID_PENDING ||
           (child_pending == GST_STATE_VOID_PENDING &&
               ((pending > child_current && next > child_current) ||
                   (pending < child_current && next < child_current)))))