--- a/gplugin/gplugin-manager.c Sat Apr 11 06:11:29 2020 -0500
+++ b/gplugin/gplugin-manager.c Sat Apr 11 18:39:18 2020 -0500
@@ -991,9 +991,10 @@
gplugin_manager_real_unload_plugin(
GPluginLoader *loader = NULL;
g_return_val_if_fail(GPLUGIN_IS_PLUGIN(plugin), FALSE);
@@ -1004,7 +1005,7 @@
loader = gplugin_plugin_get_loader(plugin);
if(!GPLUGIN_IS_LOADER(loader)) {
_("Plugin loader is not a loader"));
@@ -1012,19 +1013,27 @@
- g_signal_emit(manager, signals[SIG_UNLOADING], 0, plugin, error, &ret);
+ g_signal_emit(manager, signals[SIG_UNLOADING], 0, plugin, &error, &ret); + g_propagate_error(ret_error, error); - ret = gplugin_loader_unload_plugin(loader, plugin, error);
+ ret = gplugin_loader_unload_plugin(loader, plugin, &error); gplugin_plugin_set_state(plugin, GPLUGIN_PLUGIN_STATE_QUERIED);
+ g_signal_emit(manager, signals[SIG_UNLOADED], 0, plugin); - g_signal_emit(manager, signals[SIG_UNLOADED], 0, plugin);
+ /* if the plugin successfully loaded but returned an error, ignore the gplugin_plugin_set_state(plugin, GPLUGIN_PLUGIN_STATE_UNLOAD_FAILED);
+ g_signal_emit(manager, signals[SIG_UNLOAD_FAILED], 0, plugin, error); - g_signal_emit(manager, signals[SIG_UNLOAD_FAILED], 0, plugin, error);
+ g_propagate_error(ret_error, error);