comparison libpurple/protocols/jabber/jingle/rtp.c @ 26072:266c3cc02e0e

Move functionality to the state-changed signal.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Mon, 05 Jan 2009 10:21:56 +0000
parents 8dba34f5f21a
children 23da1deb7284
comparison
equal deleted inserted replaced
26071:8dba34f5f21a 26072:266c3cc02e0e
268 { 268 {
269 purple_debug_info("jingle-rtp", "jingle_rtp_new_candidate_cb\n"); 269 purple_debug_info("jingle-rtp", "jingle_rtp_new_candidate_cb\n");
270 } 270 }
271 271
272 static void 272 static void
273 jingle_rtp_candidates_prepared_cb(PurpleMedia *media, gchar *sid, gchar *name, JingleSession *session)
274 {
275 JingleContent *content = jingle_session_find_content(session, sid, "initiator");
276 JingleTransport *oldtransport = jingle_content_get_transport(content);
277 GList *candidates = purple_media_get_local_candidates(media, sid, name);
278 JingleTransport *transport =
279 JINGLE_TRANSPORT(jingle_rtp_candidates_to_transport(
280 session, JINGLE_IS_RAWUDP(oldtransport) ?
281 JINGLE_TYPE_RAWUDP : JINGLE_TYPE_ICEUDP,
282 0, candidates));
283 g_list_free(candidates);
284
285 JINGLE_RTP_GET_PRIVATE(content)->candidates_ready = TRUE;
286
287 jingle_content_set_pending_transport(content, transport);
288 jingle_content_accept_transport(content);
289 }
290
291 static void
292 jingle_rtp_candidate_pair_established_cb(PurpleMedia *media, FsCandidate *local_candidate, FsCandidate *remote_candidate, JingleSession *session) 273 jingle_rtp_candidate_pair_established_cb(PurpleMedia *media, FsCandidate *local_candidate, FsCandidate *remote_candidate, JingleSession *session)
293 { 274 {
294 275
295 } 276 }
296 277
314 } 295 }
315 } else { 296 } else {
316 jabber_iq_send(jingle_session_to_packet(session, JINGLE_TRANSPORT_INFO)); 297 jabber_iq_send(jingle_session_to_packet(session, JINGLE_TRANSPORT_INFO));
317 jabber_iq_send(jingle_session_to_packet(session, JINGLE_SESSION_ACCEPT)); 298 jabber_iq_send(jingle_session_to_packet(session, JINGLE_SESSION_ACCEPT));
318 } 299 }
300 } else if (sid != NULL && name != NULL) {
301 JingleContent *content = jingle_session_find_content(session, sid, "initiator");
302 JingleTransport *oldtransport = jingle_content_get_transport(content);
303 GList *candidates = purple_media_get_local_candidates(media, sid, name);
304 JingleTransport *transport =
305 JINGLE_TRANSPORT(jingle_rtp_candidates_to_transport(
306 session, JINGLE_IS_RAWUDP(oldtransport) ?
307 JINGLE_TYPE_RAWUDP : JINGLE_TYPE_ICEUDP,
308 0, candidates));
309 g_list_free(candidates);
310
311 JINGLE_RTP_GET_PRIVATE(content)->candidates_ready = TRUE;
312
313 jingle_content_set_pending_transport(content, transport);
314 jingle_content_accept_transport(content);
319 } 315 }
320 } 316 }
321 317
322 static void 318 static void
323 jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaStateChangedType type, 319 jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaStateChangedType type,
363 g_hash_table_insert(js->medias, sid, media); 359 g_hash_table_insert(js->medias, sid, media);
364 360
365 /* connect callbacks */ 361 /* connect callbacks */
366 g_signal_connect(G_OBJECT(media), "new-candidate", 362 g_signal_connect(G_OBJECT(media), "new-candidate",
367 G_CALLBACK(jingle_rtp_new_candidate_cb), session); 363 G_CALLBACK(jingle_rtp_new_candidate_cb), session);
368 g_signal_connect(G_OBJECT(media), "candidates-prepared",
369 G_CALLBACK(jingle_rtp_candidates_prepared_cb), session);
370 g_signal_connect(G_OBJECT(media), "candidate-pair", 364 g_signal_connect(G_OBJECT(media), "candidate-pair",
371 G_CALLBACK(jingle_rtp_candidate_pair_established_cb), session); 365 G_CALLBACK(jingle_rtp_candidate_pair_established_cb), session);
372 g_signal_connect(G_OBJECT(media), "ready-new", 366 g_signal_connect(G_OBJECT(media), "ready-new",
373 G_CALLBACK(jingle_rtp_ready_cb), session); 367 G_CALLBACK(jingle_rtp_ready_cb), session);
374 g_signal_connect(G_OBJECT(media), "state-changed", 368 g_signal_connect(G_OBJECT(media), "state-changed",