Mercurial > pidgin
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", |