diff options
Diffstat (limited to 'src/plugins/pglist.c')
-rw-r--r-- | src/plugins/pglist.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c index bca3e6a..6b51690 100644 --- a/src/plugins/pglist.c +++ b/src/plugins/pglist.c @@ -151,13 +151,10 @@ void browse_directory_for_plugins(plugins_list *list, const char *dir) else { - plugin = g_plugin_module_new(filename, list->ref); + plugin = g_plugin_module_new(filename); if (plugin != NULL) - { - list->plugins = (GPluginModule **)realloc(list->plugins, ++list->plugins_count * sizeof(GPluginModule *)); - list->plugins[list->plugins_count - 1] = plugin; - } + add_plugin_to_main_list(plugin); } @@ -253,6 +250,14 @@ void add_plugin_to_main_list(GPluginModule *plugin) list = &_list; + if (plugin->init != NULL && !plugin->init(plugin, list->ref)) + { + log_variadic_message(LMT_ERROR, _("Initialization of plugin '%s' failed !"), + plugin->filename); + g_object_unref(G_OBJECT(plugin)); + return; + } + list->plugins = (GPluginModule **)realloc(list->plugins, ++list->plugins_count * sizeof(GPluginModule *)); list->plugins[list->plugins_count - 1] = plugin; |