Mercurial > pidgin
comparison finch/gntmedia.c @ 26524:df9042312063
Switch media to store accounts rather than connections.
This for the most part stops it from crashing when ending a session when
the connection has been interrupted.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Thu, 09 Apr 2009 21:35:06 +0000 |
parents | 28f1512b0f94 |
children | 4f2f5659aa0d |
comparison
equal
deleted
inserted
replaced
26523:6a3943412f2d | 26524:df9042312063 |
---|---|
252 } else if (state == PURPLE_MEDIA_STATE_CONNECTED) { | 252 } else if (state == PURPLE_MEDIA_STATE_CONNECTED) { |
253 finch_media_connected_cb(media, gntmedia); | 253 finch_media_connected_cb(media, gntmedia); |
254 } else if (state == PURPLE_MEDIA_STATE_NEW && | 254 } else if (state == PURPLE_MEDIA_STATE_NEW && |
255 sid != NULL && name != NULL && | 255 sid != NULL && name != NULL && |
256 purple_media_is_initiator(media, sid, name) == FALSE) { | 256 purple_media_is_initiator(media, sid, name) == FALSE) { |
257 PurpleConnection *pc; | 257 PurpleAccount *account; |
258 PurpleBuddy *buddy; | 258 PurpleBuddy *buddy; |
259 const gchar *alias; | 259 const gchar *alias; |
260 PurpleMediaSessionType type = | 260 PurpleMediaSessionType type = |
261 purple_media_get_session_type(media, sid); | 261 purple_media_get_session_type(media, sid); |
262 gchar *message = NULL; | 262 gchar *message = NULL; |
263 | 263 |
264 pc = purple_media_get_connection(gntmedia->priv->media); | 264 account = purple_media_get_account(gntmedia->priv->media); |
265 buddy = purple_find_buddy( | 265 buddy = purple_find_buddy(account, name); |
266 purple_connection_get_account(pc), name); | |
267 alias = buddy ? purple_buddy_get_contact_alias(buddy) : name; | 266 alias = buddy ? purple_buddy_get_contact_alias(buddy) : name; |
268 | 267 |
269 if (type & PURPLE_MEDIA_AUDIO) { | 268 if (type & PURPLE_MEDIA_AUDIO) { |
270 message = g_strdup_printf( | 269 message = g_strdup_printf( |
271 _("%s wishes to start an audio session with you."), | 270 _("%s wishes to start an audio session with you."), |
384 } | 383 } |
385 } | 384 } |
386 | 385 |
387 static gboolean | 386 static gboolean |
388 finch_new_media(PurpleMediaManager *manager, PurpleMedia *media, | 387 finch_new_media(PurpleMediaManager *manager, PurpleMedia *media, |
389 PurpleConnection *gc, gchar *name, gpointer null) | 388 PurpleAccount *account, gchar *name, gpointer null) |
390 { | 389 { |
391 GntWidget *gntmedia; | 390 GntWidget *gntmedia; |
392 PurpleConversation *conv; | 391 PurpleConversation *conv; |
393 | 392 |
394 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, | 393 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name); |
395 purple_connection_get_account(gc), name); | |
396 | 394 |
397 gntmedia = finch_media_new(media); | 395 gntmedia = finch_media_new(media); |
398 g_signal_connect(G_OBJECT(gntmedia), "message", G_CALLBACK(gntmedia_message_cb), conv); | 396 g_signal_connect(G_OBJECT(gntmedia), "message", G_CALLBACK(gntmedia_message_cb), conv); |
399 FINCH_MEDIA(gntmedia)->priv->conv = conv; | 397 FINCH_MEDIA(gntmedia)->priv->conv = conv; |
400 finch_conversation_set_info_widget(conv, gntmedia); | 398 finch_conversation_set_info_widget(conv, gntmedia); |