Mercurial > pidgin
changeset 29173:983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
author | maiku@pidgin.im |
---|---|
date | Mon, 26 Oct 2009 22:14:25 +0000 |
parents | f600903f7811 |
children | d9d0674dfbb3 |
files | libpurple/media/backend-fs2.c libpurple/media/media.c |
diffstat | 2 files changed, 51 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/media/backend-fs2.c Mon Oct 26 21:35:11 2009 +0000 +++ b/libpurple/media/backend-fs2.c Mon Oct 26 22:14:25 2009 +0000 @@ -381,9 +381,10 @@ } return result; } +#endif static FsCandidate * -purple_media_candidate_to_fs(PurpleMediaCandidate *candidate) +_candidate_to_fs(PurpleMediaCandidate *candidate) { FsCandidate *fscandidate; gchar *foundation; @@ -432,7 +433,20 @@ g_free(ip); return fscandidate; } -#endif + +static GList * +_candidate_list_to_fs(GList *candidates) +{ + GList *new_list = NULL; + + for (; candidates; candidates = g_list_next(candidates)) { + new_list = g_list_prepend(new_list, + _candidate_to_fs(candidates->data)); + } + + new_list = g_list_reverse(new_list); + return new_list; +} static PurpleMediaCandidate * purple_media_candidate_from_fs(FsCandidate *fscandidate) @@ -1232,6 +1246,38 @@ const gchar *sess_id, const gchar *participant, GList *remote_candidates) { + PurpleMediaBackendFs2Private *priv; + PurpleMediaBackendFs2Stream *stream; + GError *err = NULL; + + g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); + + priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); + stream = _get_stream(PURPLE_MEDIA_BACKEND_FS2(self), + sess_id, participant); + + if (stream == NULL) { + purple_debug_error("backend-fs2", + "purple_media_add_remote_candidates: " + "couldn't find stream %s %s.\n", + sess_id ? sess_id : "(null)", + participant ? participant : "(null)"); + return; + } + + stream->remote_candidates = g_list_concat(stream->remote_candidates, + _candidate_list_to_fs(remote_candidates)); + + if (purple_media_accepted(priv->media, sess_id, participant)) { + fs_stream_set_remote_candidates(stream->stream, + stream->remote_candidates, &err); + + if (err) { + purple_debug_error("backend-fs2", "Error adding remote" + " candidates: %s\n", err->message); + g_error_free(err); + } + } } static GList *
--- a/libpurple/media/media.c Mon Oct 26 21:35:11 2009 +0000 +++ b/libpurple/media/media.c Mon Oct 26 22:14:25 2009 +0000 @@ -1531,7 +1531,6 @@ { #ifdef USE_VV PurpleMediaStream *stream; - GError *err = NULL; g_return_if_fail(PURPLE_IS_MEDIA(media)); stream = purple_media_get_stream(media, sess_id, participant); @@ -1549,17 +1548,9 @@ purple_media_candidate_list_copy(remote_candidates)); if (stream->accepted == TRUE) { - GList *candidates = purple_media_candidate_list_to_fs( - stream->remote_candidates); - fs_stream_set_remote_candidates(stream->stream, - candidates, &err); - fs_candidate_list_destroy(candidates); - - if (err) { - purple_debug_error("media", "Error adding remote" - " candidates: %s\n", err->message); - g_error_free(err); - } + purple_media_backend_add_remote_candidates( + media->priv->backend, sess_id, participant, + remote_candidates); } #endif }