--- a/pidgin/gtkblist.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/gtkblist.c Mon Jun 14 23:00:10 2021 -0500
@@ -354,20 +354,24 @@
static PurpleConversation *
find_conversation_with_buddy(PurpleBuddy *buddy)
+ PurpleConversationManager *manager; PidginBlistNode *ui = g_object_get_data(G_OBJECT(buddy), UI_DATA);
- return PURPLE_CONVERSATION(purple_conversations_find_im_with_account(
- purple_buddy_get_name(buddy), purple_buddy_get_account(buddy)));
+ manager = purple_conversation_manager_get_default(); + return purple_conversation_manager_find_im(manager, + purple_buddy_get_account(buddy), + purple_buddy_get_name(buddy)); static void gtk_blist_join_chat(PurpleChat *chat)
PurpleConversation *conv;
+ PurpleConversationManager *manager; PurpleProtocol *protocol;
@@ -378,20 +382,21 @@
components = purple_chat_get_components(chat);
+ if(PURPLE_IS_PROTOCOL_CHAT(protocol)) { chat_name = purple_protocol_chat_get_name(PURPLE_PROTOCOL_CHAT(protocol),
+ if(chat_name != NULL) {
name = purple_chat_get_name(chat);
- conv = PURPLE_CONVERSATION(purple_conversations_find_chat_with_account(name,
+ manager = purple_conversation_manager_get_default(); + conv = purple_conversation_manager_find(manager, account, name); + if(PURPLE_IS_CONVERSATION(conv)) { pidgin_conv_attach_to_conversation(conv);
purple_conversation_present(conv);
@@ -3275,7 +3280,9 @@
conv = PURPLE_CHAT_CONVERSATION(bnode->conv.conv);
PurpleConversation *chat_conv;
+ PurpleConversationManager *manager; if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT, get_name)) {
chat_name = purple_protocol_chat_get_name(PURPLE_PROTOCOL_CHAT(protocol),
purple_chat_get_components(chat));
@@ -3283,8 +3290,9 @@
chat_name = g_strdup(purple_chat_get_name(chat));
- chat_conv = purple_conversations_find_chat_with_account(chat_name,
+ manager = purple_conversation_manager_get_default(); + chat_conv = purple_conversation_manager_find_chat(manager, account, if(PURPLE_IS_CHAT_CONVERSATION(chat_conv)) {
@@ -6005,6 +6013,8 @@
if (resp == GTK_RESPONSE_OK)
+ PurpleConversationManager *manager; who = gtk_entry_get_text(GTK_ENTRY(data->entry));
grp = pidgin_text_combo_box_entry_get_text(data->combo);
whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias));
@@ -6059,11 +6069,14 @@
- im = purple_conversations_find_im_with_account(who, data->rq_data.account);
+ manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, data->rq_data.account, + if(PURPLE_IS_IM_CONVERSATION(im)) { icon = purple_im_conversation_get_icon(PURPLE_IM_CONVERSATION(im));
purple_buddy_icon_update(icon);
--- a/pidgin/gtkconv.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/gtkconv.c Mon Jun 14 23:00:10 2021 -0500
@@ -1732,8 +1732,17 @@
- return pidgin_conversations_get_unseen(purple_conversations_get_all(),
- min_state, hidden_only, max_count);
+ PurpleConversationManager *manager; + GList *list, *ret = NULL; + manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + ret = pidgin_conversations_get_unseen(list, min_state, hidden_only, @@ -3215,9 +3224,15 @@
for (bn = purple_blist_node_get_first_child(cn); bn; bn = purple_blist_node_get_sibling_next(bn)) {
PurpleBuddy *b = PURPLE_BUDDY(bn);
- if ((im = purple_conversations_find_im_with_account(purple_buddy_get_name(b), purple_buddy_get_account(b)))) {
- if (PIDGIN_CONVERSATION(im))
- return PIDGIN_CONVERSATION(im);
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, + purple_buddy_get_account(b), + purple_buddy_get_name(b)); + if(PIDGIN_CONVERSATION(im)) { + return PIDGIN_CONVERSATION(im); @@ -4280,22 +4295,31 @@
close_on_tabs_pref_cb(const char *name, PurplePrefType type,
gconstpointer value, gpointer data)
PurpleConversation *conv;
+ PurpleConversationManager *manager; PidginConversation *gtkconv;
- for (l = purple_conversations_get_all(); l != NULL; l = l->next) {
- conv = (PurpleConversation *)l->data;
- if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv))
+ manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + conv = PURPLE_CONVERSATION(list->data); + if(!PIDGIN_IS_PIDGIN_CONVERSATION(conv)) { + list = g_list_delete_link(list, list); gtkconv = PIDGIN_CONVERSATION(conv);
gtk_widget_show(gtkconv->close);
gtk_widget_hide(gtkconv->close);
+ list = g_list_delete_link(list, list); @@ -4322,18 +4346,23 @@
show_formatting_toolbar_pref_cb(const char *name, PurplePrefType type,
gconstpointer value, gpointer data)
PurpleConversation *conv;
+ PurpleConversationManager *manager; PidginConversation *gtkconv;
gboolean visible = (gboolean)GPOINTER_TO_INT(value);
- for (l = purple_conversations_get_all(); l != NULL; l = l->next)
- conv = (PurpleConversation *)l->data;
- if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv))
+ manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + conv = PURPLE_CONVERSATION(list->data); + if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv)) { + list = g_list_delete_link(list, list); gtkconv = PIDGIN_CONVERSATION(conv);
@@ -4344,6 +4373,8 @@
talkatu_editor_set_toolbar_visible(TALKATU_EDITOR(gtkconv->editor), visible);
+ list = g_list_delete_link(list, list); @@ -4426,9 +4457,15 @@
PurpleBuddy *buddy = (PurpleBuddy*)node;
- im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy), purple_buddy_get_account(buddy));
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, + purple_buddy_get_account(buddy), + purple_buddy_get_name(buddy)); + if(PURPLE_IS_IM_CONVERSATION(im)) { return PIDGIN_CONVERSATION(im);
@@ -4436,11 +4473,14 @@
account_signed_off_cb(PurpleConnection *gc, gpointer event)
- for (iter = purple_conversations_get_all(); iter; iter = iter->next)
- PurpleConversation *conv = iter->data;
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + PurpleConversation *conv = PURPLE_CONVERSATION(list->data); /* This seems fine in theory, but we also need to cover the
* case of this account matching one of the other buddies in
@@ -4466,15 +4506,21 @@
if (chat == NULL && comps != NULL)
g_hash_table_destroy(comps);
+ list = g_list_delete_link(list, list); account_signing_off(PurpleConnection *gc)
- GList *list = purple_conversations_get_all();
+ PurpleConversationManager *manager; PurpleAccount *account = purple_connection_get_account(gc);
+ manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); /* We are about to sign off. See which chats we are currently in, and mark
* them for rejoin on reconnect. */
@@ -4534,20 +4580,31 @@
update_buddy_idle_changed(PurpleBuddy *buddy, gboolean old, gboolean newidle)
- im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy), purple_buddy_get_account(buddy));
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, + purple_buddy_get_account(buddy), + purple_buddy_get_name(buddy)); + if(PURPLE_IS_IM_CONVERSATION(im)) { pidgin_conv_update_fields(im, PIDGIN_CONV_TAB_ICON);
update_buddy_icon(PurpleBuddy *buddy)
- im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy), purple_buddy_get_account(buddy));
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, + purple_buddy_get_account(buddy), + purple_buddy_get_name(buddy)); + if(PURPLE_IS_IM_CONVERSATION(im)) { pidgin_conv_update_fields(im, PIDGIN_CONV_BUDDY_ICON);
@@ -4580,15 +4637,19 @@
update_buddy_typing(PurpleAccount *account, const char *who)
PurpleConversation *conv;
+ PurpleConversationManager *manager; PidginConversation *gtkconv;
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(who, account));
+ manager = purple_conversation_manager_get_default(); + conv = purple_conversation_manager_find_im(manager, account, who); + if(!PURPLE_IS_CONVERSATION(conv)) { gtkconv = PIDGIN_CONVERSATION(conv);
- if (gtkconv && gtkconv->active_conv == conv)
+ if(gtkconv && gtkconv->active_conv == conv) { pidgin_conv_update_fields(conv, PIDGIN_CONV_COLORIZE_TITLE);
@@ -4724,10 +4785,17 @@
if (PURPLE_IS_IM_CONVERSATION(conv)) {
+ PurpleConversationManager *manager; list = g_list_copy(list);
- for (convs = purple_conversations_get_all(); convs; convs = convs->next) {
+ manager = purple_conversation_manager_get_default(); + convs = purple_conversation_manager_get_all(manager); if(!PURPLE_IS_IM_CONVERSATION(convs->data)) {
+ convs = g_list_delete_link(convs, convs); if (convs->data != conv &&
@@ -4735,6 +4803,8 @@
pidgin_conv_attach(convs->data);
list = g_list_concat(list, g_list_copy(purple_conversation_get_message_history(convs->data)));
+ convs = g_list_delete_link(convs, convs); list = g_list_sort(list, (GCompareFunc)message_compare);
gtkconv->attach_current = list;
--- a/pidgin/gtkdialogs.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/gtkdialogs.c Mon Jun 14 23:00:10 2021 -0500
@@ -322,14 +322,17 @@
pidgin_dialogs_im_with_user(PurpleAccount *account, const char *username)
+ PurpleConversationManager *manager; g_return_if_fail(account != NULL);
g_return_if_fail(username != NULL);
- im = purple_conversations_find_im_with_account(username, account);
+ manager = purple_conversation_manager_get_default(); + im = purple_conversation_manager_find_im(manager, account, username);
+ if(!PURPLE_IS_IM_CONVERSATION(im)) { im = purple_im_conversation_new(account, username);
pidgin_conv_attach_to_conversation(im);
purple_conversation_present(im);
--- a/pidgin/gtkmedia.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/gtkmedia.c Mon Jun 14 23:00:10 2021 -0500
@@ -511,32 +511,46 @@
pidgin_media_emit_message(PidginMedia *gtkmedia, const char *msg)
- PurpleAccount *account = purple_media_get_account(
- gtkmedia->priv->media);
- PurpleConversation *conv = purple_conversations_find_with_account(
- gtkmedia->priv->screenname, account);
+ PurpleConversation *conv; + PurpleConversationManager *manager; + PurpleAccount *account; + account = purple_media_get_account(gtkmedia->priv->media); + manager = purple_conversation_manager_get_default(); + conv = purple_conversation_manager_find(manager, account, + gtkmedia->priv->screenname); + if(PURPLE_IS_CONVERSATION(conv)) { purple_conversation_write_system_message(conv, msg, 0);
-pidgin_media_error_cb(PidginMedia *media, const char *error, PidginMedia *gtkmedia)
+pidgin_media_error_cb(PidginMedia *media, const gchar *error, - PurpleAccount *account = purple_media_get_account(
- gtkmedia->priv->media);
- PurpleConversation *conv = purple_conversations_find_with_account(
- gtkmedia->priv->screenname, account);
- purple_conversation_write_system_message(
- conv, error, PURPLE_MESSAGE_ERROR);
+ PurpleConversation *conv; + PurpleConversationManager *manager; + PurpleAccount *account; + account = purple_media_get_account(gtkmedia->priv->media); + manager = purple_conversation_manager_get_default(); + conv = purple_conversation_manager_find(manager, account, + gtkmedia->priv->screenname); + if(PURPLE_IS_CONVERSATION(conv)) { + purple_conversation_write_system_message(conv, error, purple_notify_error(NULL, NULL, _("Media error"), error,
- purple_request_cpar_from_conversation(conv));
+ purple_request_cpar_from_conversation(conv)); gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
--- a/pidgin/pidgincommands.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/pidgincommands.c Mon Jun 14 23:00:10 2021 -0500
@@ -137,9 +137,19 @@
clearall_command_cb(PurpleConversation *conv,
const char *cmd, char **args, char **error, void *data)
- for (l = purple_conversations_get_all(); l != NULL; l = l->next)
- purple_conversation_clear_message_history(PURPLE_CONVERSATION(l->data));
+ PurpleConversationManager *manager; + manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + PurpleConversation *conv = PURPLE_CONVERSATION(list->data); + purple_conversation_clear_message_history(conv); + list = g_list_delete_link(list, list); return PURPLE_CMD_RET_OK;
--- a/pidgin/plugins/gestures/gestures.c Mon Jun 14 22:18:20 2021 -0500
+++ b/pidgin/plugins/gestures/gestures.c Mon Jun 14 23:00:10 2021 -0500
@@ -243,7 +243,8 @@
gestures_load(GPluginPlugin *plugin, GError **error)
PurpleConversation *conv;
+ PurpleConversationManager *manager; purple_prefs_add_none("/plugins/gtk");
purple_prefs_add_none("/plugins/gtk/X11");
@@ -255,13 +256,20 @@
gstroke_set_draw_strokes(purple_prefs_get_bool(
"/plugins/gtk/X11/gestures/visual"));
- for (l = purple_conversations_get_all(); l != NULL; l = l->next) {
- conv = (PurpleConversation *)l->data;
+ manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); + conv = PURPLE_CONVERSATION(list->data); - if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv))
+ if(!PIDGIN_IS_PIDGIN_CONVERSATION(conv)) { + list = g_list_delete_link(list, list); + list = g_list_delete_link(list, list); purple_signal_connect(purple_conversations_get_handle(),
@@ -275,19 +283,28 @@
gestures_unload(GPluginPlugin *plugin, GError **error)
PurpleConversation *conv;
+ PurpleConversationManager *manager; PidginConversation *gtkconv;
+ manager = purple_conversation_manager_get_default(); + list = purple_conversation_manager_get_all(manager); - for (l = purple_conversations_get_all(); l != NULL; l = l->next) {
- conv = (PurpleConversation *)l->data;
+ conv = PURPLE_CONVERSATION(list->data); - if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv))
+ if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv)) { + list = g_list_delete_link(list, list); gtkconv = PIDGIN_CONVERSATION(conv);
gstroke_cleanup(gtkconv->history);
gstroke_disable(gtkconv->history);
+ list = g_list_delete_link(list, list);