comparison libpurple/media/media.c @ 29165:cb843608e183

Store local_candidates in PurpleMedia as a GList of PurpleMediaCandidate's.
author maiku@pidgin.im
date Mon, 26 Oct 2009 18:32:27 +0000
parents 1fdc75c94c22
children 18571ea6e44a
comparison
equal deleted inserted replaced
29164:ec069900bf96 29165:cb843608e183
321 purple_timeout_remove(stream->connected_cb_id); 321 purple_timeout_remove(stream->connected_cb_id);
322 322
323 g_free(stream->participant); 323 g_free(stream->participant);
324 324
325 if (stream->local_candidates) 325 if (stream->local_candidates)
326 fs_candidate_list_destroy(stream->local_candidates); 326 purple_media_candidate_list_free(stream->local_candidates);
327 if (stream->remote_candidates) 327 if (stream->remote_candidates)
328 fs_candidate_list_destroy(stream->remote_candidates); 328 fs_candidate_list_destroy(stream->remote_candidates);
329 329
330 if (stream->active_local_candidates) 330 if (stream->active_local_candidates)
331 fs_candidate_list_destroy(stream->active_local_candidates); 331 fs_candidate_list_destroy(stream->active_local_candidates);
563 g_free(foundation); 563 g_free(foundation);
564 g_free(ip); 564 g_free(ip);
565 return fscandidate; 565 return fscandidate;
566 } 566 }
567 567
568 static PurpleMediaCandidate *
569 purple_media_candidate_from_fs(FsCandidate *fscandidate)
570 {
571 PurpleMediaCandidate *candidate;
572
573 if (fscandidate == NULL)
574 return NULL;
575
576 candidate = purple_media_candidate_new(fscandidate->foundation,
577 fscandidate->component_id, fscandidate->type,
578 fscandidate->proto, fscandidate->ip, fscandidate->port);
579 g_object_set(candidate,
580 "base-ip", fscandidate->base_ip,
581 "base-port", fscandidate->base_port,
582 "priority", fscandidate->priority,
583 "username", fscandidate->username,
584 "password", fscandidate->password,
585 "ttl", fscandidate->ttl, NULL);
586 return candidate;
587 }
588
589 static GList *
590 purple_media_candidate_list_from_fs(GList *candidates)
591 {
592 GList *new_list = NULL;
593
594 for (; candidates; candidates = g_list_next(candidates)) {
595 new_list = g_list_prepend(new_list,
596 purple_media_candidate_from_fs(
597 candidates->data));
598 }
599
600 new_list = g_list_reverse(new_list);
601 return new_list;
602 }
603
604 static GList * 568 static GList *
605 purple_media_candidate_list_to_fs(GList *candidates) 569 purple_media_candidate_list_to_fs(GList *candidates)
606 { 570 {
607 GList *new_list = NULL; 571 GList *new_list = NULL;
608 572
882 return media_stream; 846 return media_stream;
883 } 847 }
884 848
885 static void 849 static void
886 purple_media_insert_local_candidate(PurpleMediaSession *session, const gchar *name, 850 purple_media_insert_local_candidate(PurpleMediaSession *session, const gchar *name,
887 FsCandidate *candidate) 851 PurpleMediaCandidate *candidate)
888 { 852 {
889 PurpleMediaStream *stream; 853 PurpleMediaStream *stream;
890 854
891 g_return_if_fail(session != NULL); 855 g_return_if_fail(session != NULL);
892 856
1229 { 1193 {
1230 PurpleMediaSession *session = 1194 PurpleMediaSession *session =
1231 purple_media_get_session(media, sess_id); 1195 purple_media_get_session(media, sess_id);
1232 1196
1233 purple_media_insert_local_candidate(session, participant, 1197 purple_media_insert_local_candidate(session, participant,
1234 purple_media_candidate_to_fs(candidate)); 1198 purple_media_candidate_copy(candidate));
1235 1199
1236 g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE], 1200 g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE],
1237 0, session->id, participant, candidate); 1201 0, session->id, participant, candidate);
1238 } 1202 }
1239 1203
1685 { 1649 {
1686 #ifdef USE_VV 1650 #ifdef USE_VV
1687 PurpleMediaStream *stream; 1651 PurpleMediaStream *stream;
1688 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); 1652 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
1689 stream = purple_media_get_stream(media, sess_id, participant); 1653 stream = purple_media_get_stream(media, sess_id, participant);
1690 return stream ? purple_media_candidate_list_from_fs( 1654 return stream ? purple_media_candidate_list_copy(
1691 stream->local_candidates) : NULL; 1655 stream->local_candidates) : NULL;
1692 #else 1656 #else
1693 return NULL; 1657 return NULL;
1694 #endif 1658 #endif
1695 } 1659 }