comparison libpurple/protocols/jabber/jingle/rtp.c @ 24994:50309309bc4d

Use the state-changed signal.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Mon, 05 Jan 2009 09:48:39 +0000
parents 7d2e06b29f88
children 8dba34f5f21a
comparison
equal deleted inserted replaced
24993:7d2e06b29f88 24994:50309309bc4d
262 return NULL; 262 return NULL;
263 } 263 }
264 } 264 }
265 265
266 static void 266 static void
267 jingle_rtp_hangup_cb(PurpleMedia *media, JingleSession *session)
268 {
269 gchar *sid = jingle_session_get_sid(session);
270 jabber_iq_send(jingle_session_to_packet(session, JINGLE_SESSION_TERMINATE));
271 g_hash_table_remove(jingle_session_get_js(session)->medias, sid);
272 g_free(sid);
273 g_object_unref(session);
274 }
275
276 static void
277 jingle_rtp_new_candidate_cb(PurpleMedia *media, gchar *sid, gchar *name, FsCandidate *candidate, JingleSession *session) 267 jingle_rtp_new_candidate_cb(PurpleMedia *media, gchar *sid, gchar *name, FsCandidate *candidate, JingleSession *session)
278 { 268 {
279 purple_debug_info("jingle-rtp", "jingle_rtp_new_candidate_cb\n"); 269 purple_debug_info("jingle-rtp", "jingle_rtp_new_candidate_cb\n");
280 } 270 }
281 271
332 static void 322 static void
333 jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaStateChangedType type, 323 jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaStateChangedType type,
334 gchar *sid, gchar *name, JingleSession *session) 324 gchar *sid, gchar *name, JingleSession *session)
335 { 325 {
336 purple_debug_info("jingle-rtp", "state-changed: type %d id: %s name: %s\n", type, sid, name); 326 purple_debug_info("jingle-rtp", "state-changed: type %d id: %s name: %s\n", type, sid, name);
327
328 if (sid == NULL && name == NULL &&
329 jingle_session_is_initiator(session) == TRUE) {
330 gchar *sid = jingle_session_get_sid(session);
331 jabber_iq_send(jingle_session_to_packet(session,
332 JINGLE_SESSION_TERMINATE));
333 g_hash_table_remove(jingle_session_get_js(session)->medias, sid);
334 g_free(sid);
335 g_object_unref(session);
336 }
337 } 337 }
338 338
339 static PurpleMedia * 339 static PurpleMedia *
340 jingle_rtp_create_media(JingleContent *content) 340 jingle_rtp_create_media(JingleContent *content)
341 { 341 {
361 } 361 }
362 purple_debug_info("jingle-rtp", "inserting media with sid: %s into table\n", sid); 362 purple_debug_info("jingle-rtp", "inserting media with sid: %s into table\n", sid);
363 g_hash_table_insert(js->medias, sid, media); 363 g_hash_table_insert(js->medias, sid, media);
364 364
365 /* connect callbacks */ 365 /* connect callbacks */
366 g_signal_connect(G_OBJECT(media), "reject",
367 G_CALLBACK(jingle_rtp_hangup_cb), session);
368 g_signal_connect(G_OBJECT(media), "hangup",
369 G_CALLBACK(jingle_rtp_hangup_cb), session);
370 g_signal_connect(G_OBJECT(media), "new-candidate", 366 g_signal_connect(G_OBJECT(media), "new-candidate",
371 G_CALLBACK(jingle_rtp_new_candidate_cb), session); 367 G_CALLBACK(jingle_rtp_new_candidate_cb), session);
372 g_signal_connect(G_OBJECT(media), "candidates-prepared", 368 g_signal_connect(G_OBJECT(media), "candidates-prepared",
373 G_CALLBACK(jingle_rtp_candidates_prepared_cb), session); 369 G_CALLBACK(jingle_rtp_candidates_prepared_cb), session);
374 g_signal_connect(G_OBJECT(media), "candidate-pair", 370 g_signal_connect(G_OBJECT(media), "candidate-pair",