Update finch to use GPluginManager's signals directly

Sat, 29 May 2021 03:23:01 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 29 May 2021 03:23:01 -0500
changeset 40897
d7f0dd7ba01e
parent 40896
031172d26bef
child 40898
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/

finch/gntblist.c file | annotate | diff | comparison | revisions
finch/gntconv.c file | annotate | diff | comparison | revisions
--- 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);

mercurial