changeset 28230:f77978e6968e

Let's keep this working right.
author maiku@pidgin.im
date Thu, 13 Aug 2009 07:12:02 +0000
parents f5580e1ca4b1
children 2333ab5777eb
files libpurple/media.c libpurple/mediamanager.c
diffstat 2 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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);