diff options
author | Aleksander Morgado <aleksander@gnu.org> | 2011-09-07 18:05:42 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:20 +0100 |
commit | 59c783eb614c0a56e2d1a2daeb0fef0decdf690e (patch) | |
tree | 439f1a8041056c12763f2c10b918f1419956be42 | |
parent | 27e1d97aca340877db8f2b2181406b3ed8c06a5f (diff) |
plugin-base: new 'allowed-subsystems' property
The plugins can set this property to filter support check requests by subsystem.
The value given to the property should be a NULL-terminated array of C strings,
e.g.:
const gchar *subsystems[] = { "tty", NULL };
-rw-r--r-- | src/mm-plugin-base.c | 19 | ||||
-rw-r--r-- | src/mm-plugin-base.h | 5 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c index 31c52720..32e08511 100644 --- a/src/mm-plugin-base.c +++ b/src/mm-plugin-base.c @@ -67,11 +67,15 @@ typedef struct { GUdevClient *client; GHashTable *tasks; gboolean sort_last; + + /* Plugin-specific setups */ + const gchar **subsystems; } MMPluginBasePrivate; enum { PROP_0, PROP_NAME, + PROP_ALLOWED_SUBSYSTEMS, PROP_SORT_LAST, LAST_PROP }; @@ -1544,6 +1548,10 @@ set_property (GObject *object, guint prop_id, /* Construct only */ priv->name = g_value_dup_string (value); break; + case PROP_ALLOWED_SUBSYSTEMS: + /* Construct only */ + priv->subsystems = (const gchar **)g_value_get_pointer (value); + break; case PROP_SORT_LAST: /* Construct only */ priv->sort_last = g_value_get_boolean (value); @@ -1564,6 +1572,9 @@ get_property (GObject *object, guint prop_id, case PROP_NAME: g_value_set_string (value, priv->name); break; + case PROP_ALLOWED_SUBSYSTEMS: + g_value_set_pointer (value, (gpointer)priv->subsystems); + break; case PROP_SORT_LAST: g_value_set_boolean (value, priv->sort_last); break; @@ -1610,6 +1621,14 @@ mm_plugin_base_class_init (MMPluginBaseClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property + (object_class, PROP_ALLOWED_SUBSYSTEMS, + g_param_spec_pointer (MM_PLUGIN_BASE_ALLOWED_SUBSYSTEMS, + "Allowed subsystems", + "List of subsystems this plugin can support, " + "should be an array of strings finished with 'NULL'", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, PROP_SORT_LAST, g_param_spec_boolean (MM_PLUGIN_BASE_SORT_LAST, "Sort Last", diff --git a/src/mm-plugin-base.h b/src/mm-plugin-base.h index 46254749..99d73ff3 100644 --- a/src/mm-plugin-base.h +++ b/src/mm-plugin-base.h @@ -112,8 +112,9 @@ void mm_plugin_base_supports_task_add_custom_init_command (MMPluginBaseSupportsT #define MM_IS_PLUBIN_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_PLUGIN_BASE)) #define MM_PLUGIN_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_PLUGIN_BASE, MMPluginBaseClass)) -#define MM_PLUGIN_BASE_NAME "name" -#define MM_PLUGIN_BASE_SORT_LAST "sort-last" +#define MM_PLUGIN_BASE_NAME "name" +#define MM_PLUGIN_BASE_ALLOWED_SUBSYSTEMS "allowed-subsystems" +#define MM_PLUGIN_BASE_SORT_LAST "sort-last" typedef struct _MMPluginBase MMPluginBase; typedef struct _MMPluginBaseClass MMPluginBaseClass; |