Mercurial > pidgin
diff libpurple/mediamanager.c @ 23801:43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
to missing GStreamer/Farsight plugins.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Tue, 27 May 2008 02:24:03 +0000 |
parents | e1c8ec1259de |
children | cbe97caec684 |
line wrap: on
line diff
--- a/libpurple/mediamanager.c Sun May 25 04:01:44 2008 +0000 +++ b/libpurple/mediamanager.c Tue May 27 02:24:03 2008 +0000 @@ -133,13 +133,22 @@ const char *conference_type, const char *remote_user) { + 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); - PurpleMedia *media = PURPLE_MEDIA(g_object_new(purple_media_get_type(), - "screenname", remote_user, - "connection", gc, - "farsight-conference", conference, - NULL)); + if (ret == GST_STATE_CHANGE_FAILURE) { + purple_conv_present_error(remote_user, + purple_connection_get_account(gc), + _("Error creating conference.")); + return NULL; + } + + media = PURPLE_MEDIA(g_object_new(purple_media_get_type(), + "screenname", remote_user, + "connection", gc, + "farsight-conference", conference, + 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;