diff options
author | Michael Ruprecht <maiku@pidgin.im> | 2009-10-26 22:50:23 +0000 |
---|---|---|
committer | Michael Ruprecht <maiku@pidgin.im> | 2009-10-26 22:50:23 +0000 |
commit | 9fe959c410fc7e05569f5efa006bda8eb5edeb69 (patch) | |
tree | 6c7210a5c1632cb6b1b2aaf62e3e54b58245a7c5 | |
parent | b8ca70552926816f93303923727893c12dc53c2b (diff) | |
download | pidgin-9fe959c410fc7e05569f5efa006bda8eb5edeb69.tar.gz |
Move get_local_candidates functionality over to the Fs2 media backend.
-rw-r--r-- | libpurple/media/backend-fs2.c | 34 | ||||
-rw-r--r-- | libpurple/media/media.c | 7 |
2 files changed, 33 insertions, 8 deletions
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c index d30cfe7b2d..f7ff0219d2 100644 --- a/libpurple/media/backend-fs2.c +++ b/libpurple/media/backend-fs2.c @@ -467,6 +467,20 @@ _candidate_from_fs(FsCandidate *fscandidate) return candidate; } +static GList * +_candidate_list_from_fs(GList *candidates) +{ + GList *new_list = NULL; + + for (; candidates; candidates = g_list_next(candidates)) { + new_list = g_list_prepend(new_list, + _candidate_from_fs(candidates->data)); + } + + new_list = g_list_reverse(new_list); + return new_list; +} + #if 0 static FsCodec * _codec_to_fs(const PurpleMediaCodec *codec) @@ -705,6 +719,7 @@ _gst_handle_message_element(GstBus *bus, GstMessage *msg, PurpleMediaCandidate *candidate; FsParticipant *participant; PurpleMediaBackendFs2Session *session; + PurpleMediaBackendFs2Stream *media_stream; gchar *name; value = gst_structure_get_value(msg->structure, "stream"); @@ -722,10 +737,10 @@ _gst_handle_message_element(GstBus *bus, GstMessage *msg, g_object_get(participant, "cname", &name, NULL); g_object_unref(participant); -#if 0 - purple_media_insert_local_candidate(session, name, + media_stream = _get_stream(self, session->id, name); + media_stream->local_candidates = g_list_append( + media_stream->local_candidates, fs_candidate_copy(local_candidate)); -#endif candidate = _candidate_from_fs(local_candidate); g_signal_emit_by_name(self, "new-candidate", @@ -1401,7 +1416,18 @@ static GList * purple_media_backend_fs2_get_local_candidates(PurpleMediaBackend *self, const gchar *sess_id, const gchar *participant) { - return NULL; + PurpleMediaBackendFs2Stream *stream; + GList *candidates = NULL; + + g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); + + stream = _get_stream(PURPLE_MEDIA_BACKEND_FS2(self), + sess_id, participant); + + if (stream != NULL) + candidates = _candidate_list_from_fs( + stream->local_candidates); + return candidates; } static void diff --git a/libpurple/media/media.c b/libpurple/media/media.c index 761a2ef2cb..dc9f68bec8 100644 --- a/libpurple/media/media.c +++ b/libpurple/media/media.c @@ -1503,11 +1503,10 @@ purple_media_get_local_candidates(PurpleMedia *media, const gchar *sess_id, const gchar *participant) { #ifdef USE_VV - PurpleMediaStream *stream; g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); - stream = purple_media_get_stream(media, sess_id, participant); - return stream ? purple_media_candidate_list_copy( - stream->local_candidates) : NULL; + + return purple_media_backend_get_local_candidates(media->priv->backend, + sess_id, participant); #else return NULL; #endif |