diff options
author | Michael Ruprecht <maiku@pidgin.im> | 2009-10-26 22:14:25 +0000 |
---|---|---|
committer | Michael Ruprecht <maiku@pidgin.im> | 2009-10-26 22:14:25 +0000 |
commit | b1668101b92a678e700d862497481a8a0c0330df (patch) | |
tree | 4928a77dd8f5b94760b5c2eebb2f55f3263ac790 | |
parent | d929737eda216b83cef90bf64344f5390aca2a9a (diff) | |
download | pidgin-b1668101b92a678e700d862497481a8a0c0330df.tar.gz |
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
-rw-r--r-- | libpurple/media/backend-fs2.c | 50 | ||||
-rw-r--r-- | libpurple/media/media.c | 15 |
2 files changed, 51 insertions, 14 deletions
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c index 48e1a25b1b..0df8933a1d 100644 --- a/libpurple/media/backend-fs2.c +++ b/libpurple/media/backend-fs2.c @@ -381,9 +381,10 @@ _session_type_from_fs(FsMediaType type, FsStreamDirection direction) } 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 @@ purple_media_candidate_to_fs(PurpleMediaCandidate *candidate) 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 @@ purple_media_backend_fs2_add_remote_candidates(PurpleMediaBackend *self, 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 * diff --git a/libpurple/media/media.c b/libpurple/media/media.c index e6700a2e0f..57d8320809 100644 --- a/libpurple/media/media.c +++ b/libpurple/media/media.c @@ -1531,7 +1531,6 @@ purple_media_add_remote_candidates(PurpleMedia *media, const gchar *sess_id, { #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_add_remote_candidates(PurpleMedia *media, const gchar *sess_id, 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 } |