Sat, 29 May 2021 03:23:01 -0500
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);