Mercurial > pidgin.yaz
comparison libpurple/media/media.c @ 29555:cc978a1a4bd1
Move handling Farsight 2's codecs-changed signal into the Fs2 media backend.
author | maiku@pidgin.im |
---|---|
date | Fri, 23 Oct 2009 23:12:57 +0000 |
parents | 2460e6774e08 |
children | 74e75fc3481e |
comparison
equal
deleted
inserted
replaced
29554:2460e6774e08 | 29555:cc978a1a4bd1 |
---|---|
144 static void purple_media_candidates_prepared_cb(FsStream *stream, | 144 static void purple_media_candidates_prepared_cb(FsStream *stream, |
145 PurpleMediaSession *session); | 145 PurpleMediaSession *session); |
146 static void purple_media_candidate_pair_established_cb(FsStream *stream, | 146 static void purple_media_candidate_pair_established_cb(FsStream *stream, |
147 FsCandidate *native_candidate, FsCandidate *remote_candidate, | 147 FsCandidate *native_candidate, FsCandidate *remote_candidate, |
148 PurpleMediaSession *session); | 148 PurpleMediaSession *session); |
149 static void purple_media_codecs_changed_cb(PurpleMediaBackend *backend, | |
150 const gchar *sess_id, PurpleMedia *media); | |
149 static gboolean media_bus_call(GstBus *bus, | 151 static gboolean media_bus_call(GstBus *bus, |
150 GstMessage *msg, PurpleMedia *media); | 152 GstMessage *msg, PurpleMedia *media); |
151 | 153 |
152 static GObjectClass *parent_class = NULL; | 154 static GObjectClass *parent_class = NULL; |
153 | 155 |
438 "conference-type", | 440 "conference-type", |
439 media->priv->conference_type, | 441 media->priv->conference_type, |
440 "media", media, | 442 "media", media, |
441 NULL); | 443 NULL); |
442 g_signal_connect(media->priv->backend, | 444 g_signal_connect(media->priv->backend, |
445 "codecs-changed", | |
446 G_CALLBACK( | |
447 purple_media_codecs_changed_cb), | |
448 media); | |
449 g_signal_connect(media->priv->backend, | |
443 "new-candidate", | 450 "new-candidate", |
444 G_CALLBACK( | 451 G_CALLBACK( |
445 purple_media_new_local_candidate_cb), | 452 purple_media_new_local_candidate_cb), |
446 media); | 453 media); |
447 break; | 454 break; |
1070 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); | 1077 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); |
1071 FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "local-candidate")); | 1078 FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "local-candidate")); |
1072 FsCandidate *remote_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "remote-candidate")); | 1079 FsCandidate *remote_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "remote-candidate")); |
1073 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); | 1080 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); |
1074 purple_media_candidate_pair_established_cb(stream, local_candidate, remote_candidate, session); | 1081 purple_media_candidate_pair_established_cb(stream, local_candidate, remote_candidate, session); |
1075 } else if (gst_structure_has_name(msg->structure, | |
1076 "farsight-codecs-changed")) { | |
1077 GList *sessions = g_hash_table_get_values(PURPLE_MEDIA(media)->priv->sessions); | |
1078 FsSession *fssession = g_value_get_object(gst_structure_get_value(msg->structure, "session")); | |
1079 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { | |
1080 PurpleMediaSession *session = sessions->data; | |
1081 if (session->session == fssession) { | |
1082 gchar *session_id = g_strdup(session->id); | |
1083 g_signal_emit(media, purple_media_signals[CODECS_CHANGED], 0, session_id); | |
1084 g_free(session_id); | |
1085 g_list_free(sessions); | |
1086 break; | |
1087 } | |
1088 } | |
1089 } | 1082 } |
1090 break; | 1083 break; |
1091 } | 1084 } |
1092 default: | 1085 default: |
1093 break; | 1086 break; |
1358 stream->active_remote_candidates = g_list_prepend( | 1351 stream->active_remote_candidates = g_list_prepend( |
1359 stream->active_remote_candidates, | 1352 stream->active_remote_candidates, |
1360 fs_candidate_copy(remote_candidate)); | 1353 fs_candidate_copy(remote_candidate)); |
1361 | 1354 |
1362 purple_debug_info("media", "candidate pair established\n"); | 1355 purple_debug_info("media", "candidate pair established\n"); |
1356 } | |
1357 | |
1358 static void | |
1359 purple_media_codecs_changed_cb(PurpleMediaBackend *backend, | |
1360 const gchar *sess_id, PurpleMedia *media) | |
1361 { | |
1362 g_signal_emit(media, purple_media_signals[CODECS_CHANGED], 0, sess_id); | |
1363 } | 1363 } |
1364 | 1364 |
1365 static gboolean | 1365 static gboolean |
1366 purple_media_connected_cb(PurpleMediaStream *stream) | 1366 purple_media_connected_cb(PurpleMediaStream *stream) |
1367 { | 1367 { |