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);