Mercurial > pidgin
diff libpurple/media.c @ 24990:607d82dce00e
Have XMPP use the new ready signal.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Sun, 04 Jan 2009 09:56:54 +0000 |
parents | 7caa7e2ce870 |
children | b0e6a64cbf2e |
line wrap: on
line diff
--- a/libpurple/media.c Sun Jan 04 07:42:12 2009 +0000 +++ b/libpurple/media.c Sun Jan 04 09:56:54 2009 +0000 @@ -642,7 +642,8 @@ GList *sessions; gboolean conf_ready = TRUE; - if ((session != NULL) && ((session->accepted == FALSE) || + if ((session != NULL) && ((media->priv->initiator == FALSE && + session->accepted == FALSE) || (purple_media_codecs_ready(media, session->id) == FALSE))) return; @@ -652,28 +653,31 @@ PurpleMediaSession *session_data = sessions->data; GList *streams = purple_media_get_streams(media, session_data->id, NULL); + gboolean session_ready = TRUE; - if ((session_data->accepted == FALSE) || + if ((media->priv->initiator == FALSE && + session_data->accepted == FALSE) || (purple_media_codecs_ready( media, session_data->id) == FALSE)) conf_ready = FALSE; for (; streams; streams = g_list_delete_link(streams, streams)) { PurpleMediaStream *stream = streams->data; - if (stream->candidates_prepared == TRUE && - session_data == session) + if (stream->candidates_prepared == FALSE) { + session_ready = FALSE; + conf_ready = FALSE; + } else if (session_data == session) g_signal_emit(media, purple_media_signals[READY_NEW], 0, session_data->id, stream->participant); } - if (session == session_data || session == NULL) + if (session_ready == TRUE && + (session == session_data || session == NULL)) g_signal_emit(media, purple_media_signals[READY_NEW], 0, session_data->id, NULL); } if (conf_ready == TRUE) { - g_list_free(sessions); - } else { g_signal_emit(media, purple_media_signals[READY_NEW], 0, NULL, NULL); }