Mercurial > pidgin.yaz
comparison libpurple/media/media.c @ 29554:2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
author | maiku@pidgin.im |
---|---|
date | Fri, 23 Oct 2009 22:20:45 +0000 |
parents | efeb21092ed2 |
children | cc978a1a4bd1 |
comparison
equal
deleted
inserted
replaced
29553:efeb21092ed2 | 29554:2460e6774e08 |
---|---|
136 static void purple_media_dispose (GObject *object); | 136 static void purple_media_dispose (GObject *object); |
137 static void purple_media_finalize (GObject *object); | 137 static void purple_media_finalize (GObject *object); |
138 static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); | 138 static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); |
139 static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); | 139 static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); |
140 | 140 |
141 static void purple_media_new_local_candidate_cb(FsStream *stream, | 141 static void purple_media_new_local_candidate_cb(PurpleMediaBackend *backend, |
142 FsCandidate *local_candidate, PurpleMediaSession *session); | 142 const gchar *sess_id, const gchar *participant, |
143 PurpleMediaCandidate *candidate, PurpleMedia *media); | |
143 static void purple_media_candidates_prepared_cb(FsStream *stream, | 144 static void purple_media_candidates_prepared_cb(FsStream *stream, |
144 PurpleMediaSession *session); | 145 PurpleMediaSession *session); |
145 static void purple_media_candidate_pair_established_cb(FsStream *stream, | 146 static void purple_media_candidate_pair_established_cb(FsStream *stream, |
146 FsCandidate *native_candidate, FsCandidate *remote_candidate, | 147 FsCandidate *native_candidate, FsCandidate *remote_candidate, |
147 PurpleMediaSession *session); | 148 PurpleMediaSession *session); |
436 PURPLE_TYPE_MEDIA_BACKEND_FS2, | 437 PURPLE_TYPE_MEDIA_BACKEND_FS2, |
437 "conference-type", | 438 "conference-type", |
438 media->priv->conference_type, | 439 media->priv->conference_type, |
439 "media", media, | 440 "media", media, |
440 NULL); | 441 NULL); |
442 g_signal_connect(media->priv->backend, | |
443 "new-candidate", | |
444 G_CALLBACK( | |
445 purple_media_new_local_candidate_cb), | |
446 media); | |
441 break; | 447 break; |
442 case PROP_INITIATOR: | 448 case PROP_INITIATOR: |
443 media->priv->initiator = g_value_get_boolean(value); | 449 media->priv->initiator = g_value_get_boolean(value); |
444 break; | 450 break; |
445 case PROP_PRPL_DATA: | 451 case PROP_PRPL_DATA: |
1053 media->priv->conference != | 1059 media->priv->conference != |
1054 FS_CONFERENCE(GST_MESSAGE_SRC(msg))) | 1060 FS_CONFERENCE(GST_MESSAGE_SRC(msg))) |
1055 break; | 1061 break; |
1056 | 1062 |
1057 if (gst_structure_has_name(msg->structure, | 1063 if (gst_structure_has_name(msg->structure, |
1058 "farsight-new-local-candidate")) { | |
1059 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); | |
1060 FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "candidate")); | |
1061 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); | |
1062 purple_media_new_local_candidate_cb(stream, local_candidate, session); | |
1063 } else if (gst_structure_has_name(msg->structure, | |
1064 "farsight-local-candidates-prepared")) { | 1064 "farsight-local-candidates-prepared")) { |
1065 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); | 1065 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); |
1066 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); | 1066 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); |
1067 purple_media_candidates_prepared_cb(stream, session); | 1067 purple_media_candidates_prepared_cb(stream, session); |
1068 } else if (gst_structure_has_name(msg->structure, | 1068 } else if (gst_structure_has_name(msg->structure, |
1261 #endif | 1261 #endif |
1262 } | 1262 } |
1263 | 1263 |
1264 #ifdef USE_VV | 1264 #ifdef USE_VV |
1265 static void | 1265 static void |
1266 purple_media_new_local_candidate_cb(FsStream *stream, | 1266 purple_media_new_local_candidate_cb(PurpleMediaBackend *backend, |
1267 FsCandidate *local_candidate, | 1267 const gchar *sess_id, const gchar *participant, |
1268 PurpleMediaSession *session) | 1268 PurpleMediaCandidate *candidate, PurpleMedia *media) |
1269 { | 1269 { |
1270 gchar *name; | 1270 PurpleMediaSession *session = |
1271 FsParticipant *participant; | 1271 purple_media_get_session(media, sess_id); |
1272 PurpleMediaCandidate *candidate; | 1272 |
1273 | 1273 purple_media_insert_local_candidate(session, participant, |
1274 g_return_if_fail(FS_IS_STREAM(stream)); | 1274 purple_media_candidate_to_fs(candidate)); |
1275 g_return_if_fail(session != NULL); | 1275 |
1276 | |
1277 purple_debug_info("media", "got new local candidate: %s\n", local_candidate->foundation); | |
1278 g_object_get(stream, "participant", &participant, NULL); | |
1279 g_object_get(participant, "cname", &name, NULL); | |
1280 g_object_unref(participant); | |
1281 | |
1282 purple_media_insert_local_candidate(session, name, fs_candidate_copy(local_candidate)); | |
1283 | |
1284 candidate = purple_media_candidate_from_fs(local_candidate); | |
1285 g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE], | 1276 g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE], |
1286 0, session->id, name, candidate); | 1277 0, session->id, participant, candidate); |
1287 g_object_unref(candidate); | |
1288 | |
1289 g_free(name); | |
1290 } | 1278 } |
1291 | 1279 |
1292 static void | 1280 static void |
1293 purple_media_candidates_prepared_cb(FsStream *stream, PurpleMediaSession *session) | 1281 purple_media_candidates_prepared_cb(FsStream *stream, PurpleMediaSession *session) |
1294 { | 1282 { |