--- a/ChangeLog.API Thu Jun 10 17:18:56 2021 -0500
+++ b/ChangeLog.API Thu Jun 10 18:20:35 2021 -0500
@@ -425,10 +425,13 @@
+ * purple_plugins:plugin-load signal + * purple-plugins:plugin-unload signal * purple_plugins_destroy_all
* purple_plugins_find_with_basename
* purple_plugins_find_with_name
+ * purple_plugins_get_handle * purple_plugins_get_protocols
* purple_plugins_get_search_paths
* purple_plugins_register_load_notify_cb
--- a/libpurple/plugins.c Thu Jun 10 17:18:56 2021 -0500
+++ b/libpurple/plugins.c Thu Jun 10 18:20:35 2021 -0500
@@ -131,7 +131,6 @@
purple_debug_info("plugins", "Loaded plugin %s\n", filename);
- purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin);
@@ -181,8 +180,6 @@
loaded_plugins = g_list_remove(loaded_plugins, plugin);
plugins_to_disable = g_list_remove(plugins_to_disable, plugin);
- purple_signal_emit(purple_plugins_get_handle(), "plugin-unload", plugin);
purple_prefs_disconnect_by_handle(plugin);
@@ -791,27 +788,12 @@
/**************************************************************************
**************************************************************************/
-purple_plugins_get_handle(void)
purple_plugins_init(void)
- void *handle = purple_plugins_get_handle();
+ GObject *manager = NULL; const gchar *search_path;
- purple_signal_register(handle, "plugin-load",
- purple_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, PURPLE_TYPE_PLUGIN);
- purple_signal_register(handle, "plugin-unload",
- purple_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, PURPLE_TYPE_PLUGIN);
gplugin_init(GPLUGIN_CORE_FLAGS_NONE);
search_path = g_getenv("PURPLE_PLUGIN_PATH");
@@ -835,13 +817,14 @@
purple_debug_info("plugins", "PURPLE_PLUGINS_SKIP environment variable set, skipping normal plugin paths");
- g_signal_connect(gplugin_manager_get_instance(), "loading-plugin",
- G_CALLBACK(plugin_loading_cb), NULL);
- g_signal_connect(gplugin_manager_get_instance(), "loaded-plugin",
- G_CALLBACK(plugin_loaded_cb), NULL);
- g_signal_connect(gplugin_manager_get_instance(), "unloading-plugin",
+ manager = gplugin_manager_get_instance(); + g_signal_connect(manager, "loading-plugin", G_CALLBACK(plugin_loading_cb), + g_signal_connect(manager, "loaded-plugin", G_CALLBACK(plugin_loaded_cb), + g_signal_connect(manager, "unloading-plugin", G_CALLBACK(plugin_unloading_cb), NULL);
- g_signal_connect(gplugin_manager_get_instance(), "unloaded-plugin",
+ g_signal_connect(manager, "unloaded-plugin", G_CALLBACK(plugin_unloaded_cb), NULL);
purple_plugins_refresh();
@@ -850,14 +833,9 @@
purple_plugins_uninit(void)
- void *handle = purple_plugins_get_handle();
purple_debug_info("plugins", "Unloading all plugins\n");
while (loaded_plugins != NULL)
purple_plugin_unload(loaded_plugins->data, NULL);
- purple_signals_disconnect_by_handle(handle);
- purple_signals_unregister_by_instance(handle);
--- a/libpurple/plugins.h Thu Jun 10 17:18:56 2021 -0500
+++ b/libpurple/plugins.h Thu Jun 10 18:20:35 2021 -0500
@@ -604,15 +604,6 @@
/**************************************************************************/
- * purple_plugins_get_handle:
- * Returns the plugin subsystem handle.
- * Returns: (transfer none): The plugin sybsystem handle.
-void *purple_plugins_get_handle(void);
* Initializes the plugin subsystem