playbin2: sync state of the sink correctly

Sync the state of the newly added chains to the state of the parent sink element
to avoid lost async-start messages. Fixes cdda:// async-done message storm.
This commit is contained in:
Wim Taymans 2009-03-17 15:39:23 +01:00
parent a8579ffea0
commit da6a544bdf

View file

@ -632,11 +632,17 @@ add_chain (GstPlayChain * chain, gboolean add)
static gboolean
activate_chain (GstPlayChain * chain, gboolean activate)
{
GstState state;
if (chain->activated == activate)
return TRUE;
GST_OBJECT_LOCK (chain->playsink);
state = GST_STATE_TARGET (chain->playsink);
GST_OBJECT_UNLOCK (chain->playsink);
if (activate)
gst_element_set_state (chain->bin, GST_STATE_PAUSED);
gst_element_set_state (chain->bin, state);
else
gst_element_set_state (chain->bin, GST_STATE_NULL);