Commit 6892e94e authored by Wim Taymans's avatar Wim Taymans
Browse files

gst/gstbin.c: Make sure that the child bin stops after completing the async...

gst/gstbin.c: Make sure that the child bin stops after completing the async state change so that the parent can conti...

Original commit message from CVS:
* gst/gstbin.c: (bin_handle_async_done):
Make sure that the child bin stops after completing the async state
change so that the parent can continue the state change to PLAYING.
Fixes #441159.
parent c0d4e1a1
2007-05-25 Wim Taymans <wim@fluendo.com>
* gst/gstbin.c: (bin_handle_async_done):
Make sure that the child bin stops after completing the async state
change so that the parent can continue the state change to PLAYING.
Fixes #441159.
2007-05-25 Wim Taymans <wim@fluendo.com>
 
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
......
......@@ -2481,6 +2481,7 @@ bin_handle_async_done (GstBin * bin, GstMessage ** message)
GstStateChangeReturn old_ret;
GstState old_state, old_next;
GstState current, next;
gboolean cont;
old_ret = GST_STATE_RETURN (bin);
GST_STATE_RETURN (bin) = GST_STATE_CHANGE_SUCCESS;
......@@ -2496,8 +2497,14 @@ bin_handle_async_done (GstBin * bin, GstMessage ** message)
/* update current state */
current = GST_STATE (bin) = old_next;
/* see if we reached the final state */
if (pending == current)
/* see if we need to continue the state change on our own. This happens when
* we were asked to do so or when we are the toplevel bin. */
cont = bin->priv->asynchandling || (GST_OBJECT_PARENT (bin) == NULL);
/* see if we reached the final state. If we are not a toplevel bin we also
* must stop at this state change, the parent will set us to the required
* state eventually. */
if (pending == current || !cont)
goto complete;
next = GST_STATE_GET_NEXT (current, pending);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment