libpurple/mediamanager.c

branch
soc.2008.vv
changeset 23701
ecbd92b724df
parent 23697
299bafcd8eb8
child 23704
9b88c9b23aed
equal deleted inserted replaced
23700:e47be56bdd2b 23701:ecbd92b724df
131 purple_media_manager_create_media(PurpleMediaManager *manager, 131 purple_media_manager_create_media(PurpleMediaManager *manager,
132 PurpleConnection *gc, 132 PurpleConnection *gc,
133 const char *conference_type, 133 const char *conference_type,
134 const char *remote_user) 134 const char *remote_user)
135 { 135 {
136 PurpleMedia *media;
136 FsConference *conference = FS_CONFERENCE(gst_element_factory_make(conference_type, NULL)); 137 FsConference *conference = FS_CONFERENCE(gst_element_factory_make(conference_type, NULL));
138 GstStateChangeReturn ret = gst_element_set_state(GST_ELEMENT(conference), GST_STATE_READY);
137 139
138 PurpleMedia *media = PURPLE_MEDIA(g_object_new(purple_media_get_type(), 140 if (ret == GST_STATE_CHANGE_FAILURE) {
139 "screenname", remote_user, 141 purple_conv_present_error(remote_user,
140 "connection", gc, 142 purple_connection_get_account(gc),
141 "farsight-conference", conference, 143 _("Error creating conference."));
142 NULL)); 144 return NULL;
145 }
146
147 media = PURPLE_MEDIA(g_object_new(purple_media_get_type(),
148 "screenname", remote_user,
149 "connection", gc,
150 "farsight-conference", conference,
151 NULL));
143 manager->priv->medias = g_list_append(manager->priv->medias, media); 152 manager->priv->medias = g_list_append(manager->priv->medias, media);
144 g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0, media); 153 g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0, media);
145 return media; 154 return media;
146 } 155 }
147 156

mercurial