changeset 26395:96ffb196d18d

Move sending session-accept out of the ready-new signal.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 20 Mar 2009 00:24:06 +0000
parents c03975d856c9
children 2ad89aff8d68
files libpurple/protocols/jabber/jingle/rtp.c
diffstat 1 files changed, 21 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jingle/rtp.c	Thu Mar 19 23:26:20 2009 +0000
+++ b/libpurple/protocols/jabber/jingle/rtp.c	Fri Mar 20 00:24:06 2009 +0000
@@ -336,12 +336,14 @@
 }
 
 static void jingle_rtp_send_initiate(JingleSession *session);
+static void jingle_rtp_send_accept(JingleSession *session);
 
 static void
 jingle_rtp_accepted_cb(PurpleMedia *media, gchar *sid, gchar *name,
 		JingleSession *session)
 {
 	purple_debug_info("jingle-rtp", "jingle_rtp_accepted_cb\n");
+	jingle_rtp_send_accept(session);
 }
 
 static void
@@ -376,6 +378,7 @@
 	jingle_content_accept_transport(content);
 
 	jingle_rtp_send_initiate(session);
+	jingle_rtp_send_accept(session);
 }
 
 static void
@@ -385,6 +388,7 @@
 	purple_debug_info("jingle-rtp", "jingle_rtp_codecs_changed_cb: "
 			"session_id: %s jingle_session: %p\n", sid, session);
 	jingle_rtp_send_initiate(session);
+	jingle_rtp_send_accept(session);
 }
 
 static void
@@ -434,20 +438,6 @@
 }
 
 static void
-jingle_rtp_ready_cb(PurpleMedia *media, gchar *sid, gchar *name, JingleSession *session)
-{
-	purple_debug_info("rtp", "ready-new: session: %s name: %s\n", sid, name);
-
-	if (sid == NULL && name == NULL) {
-		if (jingle_session_is_initiator(session) == FALSE) {
-			jabber_iq_send(jingle_session_to_packet(session, JINGLE_SESSION_ACCEPT));
-			g_signal_connect(G_OBJECT(media), "new-candidate",
-					 G_CALLBACK(jingle_rtp_new_candidate_cb), session);
-		}
-	}
-}
-
-static void
 jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaStateChangedType type,
 		gchar *sid, gchar *name, JingleSession *session)
 {
@@ -481,6 +471,23 @@
 	}
 }
 
+static void
+jingle_rtp_send_accept(JingleSession *session)
+{
+	PurpleMedia *media = jingle_rtp_get_media(session);
+
+	if (jingle_session_is_initiator(session) == FALSE &&
+			purple_media_codecs_ready(media, NULL) &&
+			purple_media_accepted(media, NULL, NULL) &&
+			purple_media_candidates_prepared(media, NULL, NULL)) {
+		jabber_iq_send(jingle_session_to_packet(session,
+				JINGLE_SESSION_ACCEPT));
+		g_signal_connect(G_OBJECT(media), "new-candidate",
+				G_CALLBACK(jingle_rtp_new_candidate_cb),
+				session);
+	}
+}
+
 static PurpleMedia *
 jingle_rtp_create_media(JingleContent *content)
 {
@@ -507,8 +514,6 @@
 				 G_CALLBACK(jingle_rtp_candidates_prepared_cb), session);
 	g_signal_connect(G_OBJECT(media), "codecs-changed",
 				 G_CALLBACK(jingle_rtp_codecs_changed_cb), session);
-	g_signal_connect(G_OBJECT(media), "ready-new",
-				 G_CALLBACK(jingle_rtp_ready_cb), session);
 	g_signal_connect(G_OBJECT(media), "state-changed",
 				 G_CALLBACK(jingle_rtp_state_changed_cb), session);