pidgin/pidgin

d7f0dd7ba01e
Parents 031172d26bef
Children 06e5a2a8f49a
Update finch to use GPluginManager's signals directly

Testing Done:
Loaded idlemaker and notification sounds to verify their items were added and then unloaded to verify they were removed without any errors or warnings.

Reviewed at https://reviews.imfreedom.org/r/683/
--- a/finch/gntblist.c Sat May 29 03:21:47 2021 -0500
+++ b/finch/gntblist.c Sat May 29 03:23:01 2021 -0500
@@ -26,6 +26,8 @@
#include <glib/gi18n-lib.h>
+#include <gplugin.h>
+
#include <purple.h>
#include <gnt.h>
@@ -2450,6 +2452,13 @@
}
static void
+reconstruct_plugins_menu_cb(GObject *plugin_manager, GPluginPlugin *plugin,
+ gpointer data)
+{
+ reconstruct_plugins_menu();
+}
+
+static void
reconstruct_accounts_menu(void)
{
GntWidget *sub;
@@ -2935,6 +2944,8 @@
static void
blist_show(PurpleBuddyList *list)
{
+ GObject *plugin_manager = NULL;
+
if (ggblist->window) {
gnt_window_present(ggblist->window);
return;
@@ -2974,10 +2985,11 @@
purple_signal_connect(purple_blist_get_handle(), "buddy-idle-changed", finch_blist_get_handle(),
PURPLE_CALLBACK(buddy_idle_changed), ggblist);
- purple_signal_connect(purple_plugins_get_handle(), "plugin-load", finch_blist_get_handle(),
- PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
- purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", finch_blist_get_handle(),
- PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
+ plugin_manager = gplugin_manager_get_instance();
+ g_signal_connect_object(plugin_manager, "loaded-plugin",
+ G_CALLBACK(reconstruct_plugins_menu_cb), ggblist, 0);
+ g_signal_connect_object(plugin_manager, "unloaded-plugin",
+ G_CALLBACK(reconstruct_plugins_menu_cb), ggblist, 0);
purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_blist_get_handle(),
PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
--- a/finch/gntconv.c Sat May 29 03:21:47 2021 -0500
+++ b/finch/gntconv.c Sat May 29 03:23:01 2021 -0500
@@ -26,6 +26,8 @@
#include <glib/gi18n-lib.h>
+#include <gplugin.h>
+
#include <purple.h>
#include <gnt.h>
@@ -564,7 +566,7 @@
}
static void
-plugin_changed_cb(PurplePlugin *p, gpointer data)
+plugin_changed_cb(GObject *plugin_manager, GPluginPlugin *p, gpointer data)
{
gg_extended_menu(data);
}
@@ -726,6 +728,7 @@
finch_create_conversation(PurpleConversation *conv)
{
FinchConv *ggc = FINCH_CONV(conv);
+ GObject *plugin_manager = NULL;
char *title;
PurpleConversation *cc;
PurpleAccount *account;
@@ -832,10 +835,11 @@
purple_signal_connect(purple_cmds_get_handle(), "cmd-removed", ggc,
G_CALLBACK(cmd_removed_cb), ggc);
- purple_signal_connect(purple_plugins_get_handle(), "plugin-load", ggc,
- PURPLE_CALLBACK(plugin_changed_cb), ggc);
- purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", ggc,
- PURPLE_CALLBACK(plugin_changed_cb), ggc);
+ plugin_manager = gplugin_manager_get_instance();
+ g_signal_connect_object(plugin_manager, "loaded-plugin",
+ G_CALLBACK(plugin_changed_cb), ggc, 0);
+ g_signal_connect_object(plugin_manager, "unloaded-plugin",
+ G_CALLBACK(plugin_changed_cb), ggc, 0);
g_free(title);
gnt_box_give_focus_to_child(GNT_BOX(ggc->window), ggc->entry);