diff options
author | Juan A. Suarez Romero <jasuarez@igalia.com> | 2015-12-10 11:32:34 +0000 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2015-12-15 17:14:55 +0100 |
commit | d1c29751d4040dcd499bed883cedff421539fcd3 (patch) | |
tree | 3673637bc196dc274d14c0577e4eedb1b6f4f338 | |
parent | 222beefa6d0deea483e35010878b4828bc41a5d4 (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.vapi | 3 | ||||
-rw-r--r-- | src/grl-plugin-priv.h | 6 | ||||
-rw-r--r-- | src/grl-plugin.c | 63 |
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; } |