mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 23:36:38 +00:00
bin: always recurse into bins when doing state changes
Never skip the state change of a bin because it needs to update the base time of its children when needed.
This commit is contained in:
parent
02a99c6ae8
commit
d05ad920ce
1 changed files with 5 additions and 0 deletions
|
@ -2175,6 +2175,10 @@ gst_bin_element_set_state (GstBin * bin, GstElement * element,
|
|||
gst_element_state_get_name (child_pending),
|
||||
gst_element_state_get_name (next));
|
||||
|
||||
/* always recurse into bins so that we can set the base time */
|
||||
if (GST_IS_BIN (element))
|
||||
goto do_state;
|
||||
|
||||
/* Try not to change the state of elements that are already in the state we're
|
||||
* going to */
|
||||
if (child_current == next && child_pending == GST_STATE_VOID_PENDING) {
|
||||
|
@ -2238,6 +2242,7 @@ gst_bin_element_set_state (GstBin * bin, GstElement * element,
|
|||
}
|
||||
}
|
||||
|
||||
do_state:
|
||||
GST_OBJECT_LOCK (bin);
|
||||
/* the element was busy with an upwards async state change, we must wait for
|
||||
* an ASYNC_DONE message before we attemp to change the state. */
|
||||
|
|
Loading…
Reference in a new issue