# HG changeset patch # User maiku@pidgin.im # Date 1250147522 0 # Node ID f77978e6968eea507ab4bb9c748b6a3613ee6612 # Parent f5580e1ca4b170371923763137cbb332cc96aa1f Let's keep this working right. diff -r f5580e1ca4b1 -r f77978e6968e libpurple/media.c --- a/libpurple/media.c Thu Aug 13 04:55:29 2009 +0000 +++ b/libpurple/media.c Thu Aug 13 07:12:02 2009 +0000 @@ -1906,8 +1906,8 @@ gst_element_add_pad(session->media->priv->confbin, ghost); } + gst_element_set_state(session->tee, GST_STATE_PLAYING); gst_element_link(session->src, session->media->priv->confbin); - gst_element_set_state(session->tee, GST_STATE_PLAYING); g_object_get(session->session, "sink-pad", &sinkpad, NULL); if (session->type & PURPLE_MEDIA_SEND_AUDIO) { @@ -1922,10 +1922,10 @@ g_free(name); gst_bin_add(GST_BIN(session->media->priv->confbin), volume); gst_bin_add(GST_BIN(session->media->priv->confbin), level); - gst_element_link(session->tee, volume); - gst_element_link(volume, level); gst_element_set_state(level, GST_STATE_PLAYING); gst_element_set_state(volume, GST_STATE_PLAYING); + gst_element_link(volume, level); + gst_element_link(session->tee, volume); srcpad = gst_element_get_static_pad(level, "src"); g_object_set(volume, "volume", input_volume, NULL); } else { @@ -2466,6 +2466,7 @@ gst_element_set_state(sink, GST_STATE_PLAYING); gst_element_set_state(stream->level, GST_STATE_PLAYING); gst_element_set_state(stream->volume, GST_STATE_PLAYING); + gst_element_set_state(queue, GST_STATE_PLAYING); gst_element_link(stream->level, sink); gst_element_link(stream->volume, stream->level); gst_element_link(queue, stream->volume); @@ -2477,11 +2478,11 @@ "fakesink", NULL); g_object_set(G_OBJECT(sink), "async", FALSE, NULL); gst_bin_add(GST_BIN(priv->confbin), sink); + gst_element_set_state(sink, GST_STATE_PLAYING); } stream->tee = gst_element_factory_make("tee", NULL); gst_bin_add_many(GST_BIN(priv->confbin), stream->src, stream->tee, NULL); - gst_element_set_state(sink, GST_STATE_PLAYING); gst_element_set_state(stream->tee, GST_STATE_PLAYING); gst_element_set_state(stream->src, GST_STATE_PLAYING); gst_element_link_many(stream->src, stream->tee, sink, NULL); diff -r f5580e1ca4b1 -r f77978e6968e libpurple/mediamanager.c --- a/libpurple/mediamanager.c Thu Aug 13 04:55:29 2009 +0000 +++ b/libpurple/mediamanager.c Thu Aug 13 07:12:02 2009 +0000 @@ -473,7 +473,6 @@ gst_element_link(tee, fakesink); ret = bin; - gst_element_set_locked_state(ret, TRUE); gst_object_ref(ret); gst_bin_add(GST_BIN(purple_media_manager_get_pipeline( manager)), ret);