/*
- * Copyright (C) 2009-2010 Andy Spencer <andy753421@gmail.com>
+ * Copyright (C) 2009-2011 Andy Spencer <andy753421@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Plugins API *
***************/
typedef struct {
- gchar *name;
+ gchar *name;
GritsPlugin *plugin;
+ GModule *module;
} GritsPluginStore;
/**
return plugins;
}
+static void grits_plugins_free_store(GritsPluginStore *store)
+{
+ g_object_unref(store->plugin);
+ //g_module_close(store->module);
+ g_free(store->name);
+ g_free(store);
+}
+
/**
* grits_plugins_free:
* @plugins: the #GritsPlugins to free
g_debug("GritsPlugins: free");
for (GList *cur = plugins->plugins; cur; cur = cur->next) {
GritsPluginStore *store = cur->data;
- g_debug("GritsPlugin: freeing %s refs=%d->%d", store->name,
+ g_debug("GritsPlugins: freeing %s refs=%d->%d", store->name,
G_OBJECT(store->plugin)->ref_count,
G_OBJECT(store->plugin)->ref_count-1);
- g_object_unref(store->plugin);
- g_free(store->name);
- g_free(store);
+ grits_plugins_free_store(store);
}
g_list_free(plugins->plugins);
if (plugins->dir)
GritsPluginStore *store = g_new0(GritsPluginStore, 1);
store->name = g_strdup(name);
store->plugin = constructor(viewer, prefs);
+ store->module = module;
plugins->plugins = g_list_prepend(plugins->plugins, store);
return store->plugin;
}
for (GList *cur = plugins->plugins; cur; cur = cur->next) {
GritsPluginStore *store = cur->data;
if (g_str_equal(store->name, name)) {
- g_object_unref(store->plugin);
- g_free(store->name);
- g_free(store);
plugins->plugins = g_list_delete_link(plugins->plugins, cur);
+ grits_plugins_free_store(store);
+ break;
}
}
return FALSE;