| 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 |