summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan A. Suarez Romero <jasuarez@igalia.com>2015-12-10 11:32:34 +0000
committerJuan A. Suarez Romero <jasuarez@igalia.com>2015-12-15 17:14:55 +0100
commitd1c29751d4040dcd499bed883cedff421539fcd3 (patch)
tree3673637bc196dc274d14c0577e4eedb1b6f4f338
parent222beefa6d0deea483e35010878b4828bc41a5d4 (diff)
core: Add GrlPluginDescriptor in GrlPluginPrivate
Integrate the plugin descriptor inside private class. https://bugzilla.gnome.org/show_bug.cgi?id=759295
-rw-r--r--bindings/vala/grilo-0.3.vapi3
-rw-r--r--src/grl-plugin-priv.h6
-rw-r--r--src/grl-plugin.c63
3 files changed, 39 insertions, 33 deletions
diff --git a/bindings/vala/grilo-0.3.vapi b/bindings/vala/grilo-0.3.vapi
index 0090c5d..8c132df 100644
--- a/bindings/vala/grilo-0.3.vapi
+++ b/bindings/vala/grilo-0.3.vapi
@@ -329,11 +329,8 @@ namespace Grl {
public void set_filename (string filename);
public void set_id (string id);
public void set_info (string key, string value);
- public void set_load_func (void* load_function);
public void set_module (GLib.Module module);
public void set_optional_info (GLib.HashTable<void*,void*> info);
- public void set_register_keys_func (void* register_keys_function);
- public void set_unload_func (void* unload_function);
public void unload ();
[NoAccessorMethod]
public bool loaded { get; }
diff --git a/src/grl-plugin-priv.h b/src/grl-plugin-priv.h
index 7538f05..5da8dd3 100644
--- a/src/grl-plugin-priv.h
+++ b/src/grl-plugin-priv.h
@@ -43,13 +43,13 @@ void grl_plugin_set_optional_info (GrlPlugin *plugin,
GHashTable *info);
void grl_plugin_set_load_func (GrlPlugin *plugin,
- gpointer load_function);
+ GrlPluginInitFunc load_function);
void grl_plugin_set_unload_func (GrlPlugin *plugin,
- gpointer unload_function);
+ GrlPluginDeinitFunc unload_function);
void grl_plugin_set_register_keys_func (GrlPlugin *plugin,
- gpointer register_keys_function);
+ GrlPluginRegisterKeysFunc register_keys_function);
gboolean grl_plugin_load (GrlPlugin *plugin, GList *configurations);
diff --git a/src/grl-plugin.c b/src/grl-plugin.c
index cfadd38..eaaa541 100644
--- a/src/grl-plugin.c
+++ b/src/grl-plugin.c
@@ -56,15 +56,11 @@ enum {
static GParamSpec *properties[PROP_LAST] = { 0 };
struct _GrlPluginPrivate {
- gchar *id;
+ GrlPluginDescriptor desc;
gchar *filename;
- gint rank;
GModule *module;
GHashTable *optional_info;
gboolean loaded;
- gboolean (*load_func) (GrlRegistry *, GrlPlugin *, GList *);
- void (*unload_func) (GrlPlugin *);
- void (*register_keys_func) (GrlRegistry *, GrlPlugin *);
};
static void grl_plugin_finalize (GObject *object);
@@ -124,7 +120,7 @@ grl_plugin_finalize (GObject *object)
{
GrlPlugin *plugin = GRL_PLUGIN (object);
- g_free (plugin->priv->id);
+ g_free (plugin->priv->desc.id);
g_free (plugin->priv->filename);
g_hash_table_unref (plugin->priv->optional_info);
@@ -177,11 +173,11 @@ grl_plugin_set_optional_info (GrlPlugin *plugin,
*/
void
grl_plugin_set_load_func (GrlPlugin *plugin,
- gpointer load_function)
+ GrlPluginInitFunc load_function)
{
g_return_if_fail (GRL_IS_PLUGIN (plugin));
- plugin->priv->load_func = load_function;
+ plugin->priv->desc.init = load_function;
}
/*
@@ -193,11 +189,11 @@ grl_plugin_set_load_func (GrlPlugin *plugin,
*/
void
grl_plugin_set_unload_func (GrlPlugin *plugin,
- gpointer unload_function)
+ GrlPluginDeinitFunc unload_function)
{
g_return_if_fail (GRL_IS_PLUGIN (plugin));
- plugin->priv->unload_func = unload_function;
+ plugin->priv->desc.deinit = unload_function;
}
/*
@@ -210,11 +206,11 @@ grl_plugin_set_unload_func (GrlPlugin *plugin,
*/
void
grl_plugin_set_register_keys_func (GrlPlugin *plugin,
- gpointer register_keys_function)
+ GrlPluginRegisterKeysFunc register_keys_function)
{
g_return_if_fail (GRL_IS_PLUGIN (plugin));
- plugin->priv->register_keys_func = register_keys_function;
+ plugin->priv->desc.register_keys = register_keys_function;
}
/**
@@ -234,13 +230,13 @@ grl_plugin_load (GrlPlugin *plugin,
g_return_val_if_fail (GRL_IS_PLUGIN (plugin), FALSE);
- if (!plugin->priv->load_func) {
+ if (!plugin->priv->desc.init) {
return FALSE;
}
registry = grl_registry_get_default ();
- if (!plugin->priv->load_func (registry, plugin, configurations)) {
+ if (!plugin->priv->desc.init (registry, plugin, configurations)) {
return FALSE;
}
@@ -261,8 +257,8 @@ grl_plugin_unload (GrlPlugin *plugin)
{
g_return_if_fail (GRL_IS_PLUGIN (plugin));
- if (plugin->priv->unload_func) {
- plugin->priv->unload_func (plugin);
+ if (plugin->priv->desc.deinit) {
+ plugin->priv->desc.deinit (plugin);
}
plugin->priv->loaded = FALSE;
@@ -284,8 +280,8 @@ grl_plugin_register_keys (GrlPlugin *plugin)
registry = grl_registry_get_default ();
- if (plugin->priv->register_keys_func) {
- plugin->priv->register_keys_func (registry, plugin);
+ if (plugin->priv->desc.register_keys) {
+ plugin->priv->desc.register_keys (registry, plugin);
}
}
@@ -302,9 +298,9 @@ grl_plugin_set_id (GrlPlugin *plugin,
{
g_return_if_fail (GRL_IS_PLUGIN (plugin));
- g_clear_pointer (&plugin->priv->id, g_free);
+ g_clear_pointer (&plugin->priv->desc.id, g_free);
- plugin->priv->id = g_strdup (id);
+ plugin->priv->desc.id = g_strdup (id);
}
/*
@@ -375,7 +371,9 @@ grl_plugin_set_info (GrlPlugin *plugin,
const gchar *
grl_plugin_get_name (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_NAME);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.name;
}
/**
@@ -391,7 +389,9 @@ grl_plugin_get_name (GrlPlugin *plugin)
const gchar *
grl_plugin_get_description (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_DESCRIPTION);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.description;
}
/**
@@ -407,7 +407,9 @@ grl_plugin_get_description (GrlPlugin *plugin)
const gchar *
grl_plugin_get_version (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_VERSION);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.version;
}
/**
@@ -423,7 +425,9 @@ grl_plugin_get_version (GrlPlugin *plugin)
const gchar *
grl_plugin_get_license (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_LICENSE);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.license ? plugin->priv->desc.license : "unknown";
}
/**
@@ -439,7 +443,9 @@ grl_plugin_get_license (GrlPlugin *plugin)
const gchar *
grl_plugin_get_author (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_AUTHOR);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.author;
}
/**
@@ -455,7 +461,9 @@ grl_plugin_get_author (GrlPlugin *plugin)
const gchar *
grl_plugin_get_site (GrlPlugin *plugin)
{
- return grl_plugin_get_info (plugin, GRL_PLUGIN_SITE);
+ g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
+ return plugin->priv->desc.site;
}
/**
@@ -473,7 +481,7 @@ grl_plugin_get_id (GrlPlugin *plugin)
{
g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
- return plugin->priv->id;
+ return plugin->priv->desc.id;
}
/**
@@ -508,6 +516,7 @@ GModule *
grl_plugin_get_module (GrlPlugin *plugin)
{
g_return_val_if_fail (GRL_IS_PLUGIN (plugin), NULL);
+
return plugin->priv->module;
}