Mercurial > pidgin
diff libpurple/protocols/jabber/jabber.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 | 2b8c161c9d7b |
children | d6a863df7884 d00a8111e479 608493e51182 925a5a7605b6 538b4175fd24 4851546210a1 e57315a062cb |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Thu Apr 09 17:59:35 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Thu Apr 09 21:35:06 2009 +0000 @@ -2614,7 +2614,7 @@ #ifdef USE_VV typedef struct { - PurpleConnection *pc; + PurpleAccount *account; gchar *who; PurpleMediaSessionType type; @@ -2637,7 +2637,7 @@ GList *labels = purple_request_field_choice_get_labels(field); gchar *who = g_strdup_printf("%s/%s", request->who, (gchar*)g_list_nth_data(labels, selected_id)); - jabber_initiate_media(request->pc, who, request->type); + jabber_initiate_media(request->account, who, request->type); g_free(who); g_free(request->who); @@ -2646,11 +2646,12 @@ #endif gboolean -jabber_initiate_media(PurpleConnection *gc, const char *who, +jabber_initiate_media(PurpleAccount *account, const char *who, PurpleMediaSessionType type) { #ifdef USE_VV - JabberStream *js = (JabberStream *) gc->proto_data; + JabberStream *js = (JabberStream *) + purple_account_get_connection(account)->proto_data; JabberBuddy *jb; JabberBuddyResource *jbr = NULL; char *resource; @@ -2675,11 +2676,9 @@ JINGLE_APP_RTP_SUPPORT_AUDIO) && jabber_resource_has_capability(jbr, GOOGLE_VOICE_CAP)) - return jabber_google_session_initiate( - gc->proto_data, who, type); + return jabber_google_session_initiate(js, who, type); else - return jingle_rtp_initiate_media( - gc->proto_data, who, type); + return jingle_rtp_initiate_media(js, who, type); } jb = jabber_buddy_find(js, who, FALSE); @@ -2698,7 +2697,7 @@ msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who); } - purple_notify_error(js->gc, _("Media Initiation Failed"), + purple_notify_error(account, _("Media Initiation Failed"), _("Media Initiation Failed"), msg); g_free(msg); return FALSE; @@ -2709,7 +2708,7 @@ gboolean result; jbr = jb->resources->data; name = g_strdup_printf("%s/%s", who, jbr->name); - result = jabber_initiate_media(gc, name, type); + result = jabber_initiate_media(account, name, type); g_free(name); return result; } else { @@ -2729,7 +2728,7 @@ PurpleMediaCaps caps; gchar *name; name = g_strdup_printf("%s/%s", who, ljbr->name); - caps = jabber_get_media_caps(gc, name); + caps = jabber_get_media_caps(account, name); g_free(name); if ((type & PURPLE_MEDIA_AUDIO) && @@ -2764,7 +2763,7 @@ gboolean result; purple_request_field_destroy(field); name = g_strdup_printf("%s/%s", who, jbr->name); - result = jabber_initiate_media(gc, name, type); + result = jabber_initiate_media(account, name, type); g_free(name); return result; } @@ -2773,17 +2772,17 @@ fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); request = g_new0(JabberMediaRequest, 1); - request->pc = gc; + request->account = account; request->who = g_strdup(who); request->type = type; purple_request_field_group_add_field(group, field); purple_request_fields_add_group(fields, group); - purple_request_fields(gc, _("Select a Resource"), msg, NULL, - fields, _("Initiate Media"), + purple_request_fields(account, _("Select a Resource"), msg, + NULL, fields, _("Initiate Media"), G_CALLBACK(jabber_media_ok_cb), _("Cancel"), G_CALLBACK(jabber_media_cancel_cb), - gc->account, who, NULL, request); + account, who, NULL, request); g_free(msg); return TRUE; @@ -2792,10 +2791,11 @@ return FALSE; } -PurpleMediaCaps jabber_get_media_caps(PurpleConnection *gc, const char *who) +PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who) { #ifdef USE_VV - JabberStream *js = (JabberStream *) gc->proto_data; + JabberStream *js = (JabberStream *) + purple_account_get_connection(account)->proto_data; JabberBuddy *jb; JabberBuddyResource *jbr; PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; @@ -2861,7 +2861,7 @@ gchar *name; jbr = jb->resources->data; name = g_strdup_printf("%s/%s", who, jbr->name); - caps = jabber_get_media_caps(gc, name); + caps = jabber_get_media_caps(account, name); g_free(name); } else { /* we've got multiple resources, combine their caps */ @@ -2872,7 +2872,7 @@ gchar *name; jbr = l->data; name = g_strdup_printf("%s/%s", who, jbr->name); - caps |= jabber_get_media_caps(gc, name); + caps |= jabber_get_media_caps(account, name); g_free(name); } }