Mercurial > pidgin
comparison libpurple/protocols/jabber/google.c @ 26322:90c7f3e477b3
Use stream-info instead of state-changed for hangup and reject.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Sat, 21 Mar 2009 00:54:34 +0000 |
parents | 007cd8dad384 |
children | 51b986bbe260 |
comparison
equal
deleted
inserted
replaced
26321:2c9fb8ac325b | 26322:90c7f3e477b3 |
---|---|
222 gchar *sid, gchar *name, GoogleSession *session) | 222 gchar *sid, gchar *name, GoogleSession *session) |
223 { | 223 { |
224 if (sid == NULL && name == NULL) { | 224 if (sid == NULL && name == NULL) { |
225 if (type == PURPLE_MEDIA_STATE_CHANGED_END) { | 225 if (type == PURPLE_MEDIA_STATE_CHANGED_END) { |
226 google_session_destroy(session); | 226 google_session_destroy(session); |
227 } else if (type == PURPLE_MEDIA_STATE_CHANGED_HANGUP) { | 227 } |
228 xmlnode *sess; | 228 } |
229 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); | 229 } |
230 | 230 |
231 xmlnode_set_attrib(iq->node, "to", session->remote_jid); | 231 static void |
232 sess = google_session_create_xmlnode(session, "terminate"); | 232 google_session_stream_info_cb(PurpleMedia *media, |
233 xmlnode_insert_child(iq->node, sess); | 233 PurpleMediaStateChangedType type, |
234 | 234 gchar *sid, gchar *name, GoogleSession *session) |
235 jabber_iq_send(iq); | 235 { |
236 } else if (type == PURPLE_MEDIA_STATE_CHANGED_REJECTED) { | 236 if (type == PURPLE_MEDIA_INFO_HANGUP) { |
237 xmlnode *sess; | 237 xmlnode *sess; |
238 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); | 238 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); |
239 | 239 |
240 xmlnode_set_attrib(iq->node, "to", session->remote_jid); | 240 xmlnode_set_attrib(iq->node, "to", session->remote_jid); |
241 sess = google_session_create_xmlnode(session, "reject"); | 241 sess = google_session_create_xmlnode(session, "terminate"); |
242 xmlnode_insert_child(iq->node, sess); | 242 xmlnode_insert_child(iq->node, sess); |
243 | 243 |
244 jabber_iq_send(iq); | 244 jabber_iq_send(iq); |
245 } | 245 } else if (type == PURPLE_MEDIA_INFO_REJECT) { |
246 | 246 xmlnode *sess; |
247 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); | |
248 | |
249 xmlnode_set_attrib(iq->node, "to", session->remote_jid); | |
250 sess = google_session_create_xmlnode(session, "reject"); | |
251 xmlnode_insert_child(iq->node, sess); | |
252 | |
253 jabber_iq_send(iq); | |
247 } | 254 } |
248 } | 255 } |
249 | 256 |
250 static GParameter * | 257 static GParameter * |
251 jabber_google_session_get_params(JabberStream *js, guint *num) | 258 jabber_google_session_get_params(JabberStream *js, guint *num) |
327 G_CALLBACK(google_session_ready), session); | 334 G_CALLBACK(google_session_ready), session); |
328 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", | 335 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", |
329 G_CALLBACK(google_session_ready), session); | 336 G_CALLBACK(google_session_ready), session); |
330 g_signal_connect(G_OBJECT(session->media), "state-changed", | 337 g_signal_connect(G_OBJECT(session->media), "state-changed", |
331 G_CALLBACK(google_session_state_changed_cb), session); | 338 G_CALLBACK(google_session_state_changed_cb), session); |
339 g_signal_connect(G_OBJECT(session->media), "stream-info", | |
340 G_CALLBACK(google_session_stream_info_cb), session); | |
332 | 341 |
333 g_free(params); | 342 g_free(params); |
334 | 343 |
335 return session->media; | 344 return session->media; |
336 } | 345 } |
392 G_CALLBACK(google_session_ready), session); | 401 G_CALLBACK(google_session_ready), session); |
393 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", | 402 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", |
394 G_CALLBACK(google_session_ready), session); | 403 G_CALLBACK(google_session_ready), session); |
395 g_signal_connect(G_OBJECT(session->media), "state-changed", | 404 g_signal_connect(G_OBJECT(session->media), "state-changed", |
396 G_CALLBACK(google_session_state_changed_cb), session); | 405 G_CALLBACK(google_session_state_changed_cb), session); |
406 g_signal_connect(G_OBJECT(session->media), "stream-info", | |
407 G_CALLBACK(google_session_stream_info_cb), session); | |
397 | 408 |
398 purple_media_codec_list_free(codecs); | 409 purple_media_codec_list_free(codecs); |
399 | 410 |
400 result = jabber_iq_new(js, JABBER_IQ_RESULT); | 411 result = jabber_iq_new(js, JABBER_IQ_RESULT); |
401 jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); | 412 jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); |