From da6a544bdfb8c3e9f80403a0de3f8449d35f88e8 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 17 Mar 2009 15:39:23 +0100 Subject: [PATCH] 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. --- gst/playback/gstplaysink.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 811299d56a..848a914e4d 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -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);