GNOME Bugzilla – Bug 441159
Regression in state change handling
Last modified: 2007-05-25 15:37:40 UTC
Attaching a sample that works with the previous release of GStreamer core, but fails to change state correctly with current CVS. The problem seems to be caused by the fact that sinks are added to the pipeline as it is changing state, so it is initially not changing state asynchronously, but then has new elements added that are.
Created attachment 88790 [details] testcase
of course, the example is flawed in the sense that it's creating a pipeline with poor sync and which uses the system clock because the pipeline hit PLAYING before the audio sink managed to get added... but it is a pipeline that used to get to play something and now doesn't.
Created attachment 88802 [details] [review] possible patch This patch makes sure that the child bin stops after completing the async state change so that the parent can continue the state change to PLAYING.
Looks good. Please commit
* 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.