Mercurial > pidgin
diff libpurple/mediamanager.c @ 23856:1c68f78414b7
Set the media pipeline to PLAYING immediately after initialization
(and a few other changes to make it actually work and not hang).
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Thu, 17 Jul 2008 21:01:46 +0000 |
parents | cbe97caec684 |
children | b8a73b6dc0a4 |
line wrap: on
line diff
--- a/libpurple/mediamanager.c Wed Jul 16 21:55:08 2008 +0000 +++ b/libpurple/mediamanager.c Thu Jul 17 21:01:46 2008 +0000 @@ -135,20 +135,24 @@ { PurpleMedia *media; FsConference *conference = FS_CONFERENCE(gst_element_factory_make(conference_type, NULL)); - GstStateChangeReturn ret = gst_element_set_state(GST_ELEMENT(conference), GST_STATE_READY); - - if (ret == GST_STATE_CHANGE_FAILURE) { - purple_conv_present_error(remote_user, - purple_connection_get_account(gc), - _("Error creating conference.")); - return NULL; - } + GstStateChangeReturn ret; media = PURPLE_MEDIA(g_object_new(purple_media_get_type(), "screenname", remote_user, "connection", gc, "farsight-conference", conference, NULL)); + + ret = gst_element_set_state(purple_media_get_pipeline(media), GST_STATE_PLAYING); + + if (ret == GST_STATE_CHANGE_FAILURE) { + purple_conv_present_error(remote_user, + purple_connection_get_account(gc), + _("Error creating conference.")); + g_object_unref(media); + return NULL; + } + manager->priv->medias = g_list_append(manager->priv->medias, media); g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0, media); return media;