aboutsummaryrefslogtreecommitdiff
path: root/src/mm-plugin-base.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-05-05 13:19:32 +0200
committerAleksander Morgado <aleksander@lanedo.com>2011-06-06 17:20:17 +0200
commitdf0d9b480c0db825126c7ebbb36bdd958bf59761 (patch)
treee28fdd56862d763c8da6e4e2bbd22a89de9dfac1 /src/mm-plugin-base.c
parent5a2078a2a5f012772612dea0921b147bf6d75d88 (diff)
plugin base: let plugins decide if they should be sorted last
Note that even if a plugin says it wants to be sorted last, the generic plugin will always be the last one. Also, there is no order guaranteed between two plugins that request to be sorted last.
Diffstat (limited to 'src/mm-plugin-base.c')
-rw-r--r--src/mm-plugin-base.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c
index 09d72394..113303c5 100644
--- a/src/mm-plugin-base.c
+++ b/src/mm-plugin-base.c
@@ -65,11 +65,13 @@ typedef struct {
char *name;
GUdevClient *client;
GHashTable *tasks;
+ gboolean sort_last;
} MMPluginBasePrivate;
enum {
PROP_0,
PROP_NAME,
+ PROP_SORT_LAST,
LAST_PROP
};
@@ -1216,6 +1218,12 @@ get_name (MMPlugin *plugin)
return MM_PLUGIN_BASE_GET_PRIVATE (plugin)->name;
}
+static gboolean
+get_sort_last (const MMPlugin *plugin)
+{
+ return MM_PLUGIN_BASE_GET_PRIVATE (plugin)->sort_last;
+}
+
static char *
get_driver_name (GUdevDevice *device)
{
@@ -1387,6 +1395,7 @@ plugin_init (MMPlugin *plugin_class)
{
/* interface implementation */
plugin_class->get_name = get_name;
+ plugin_class->get_sort_last = get_sort_last;
plugin_class->supports_port = supports_port;
plugin_class->cancel_supports_port = cancel_supports_port;
plugin_class->grab_port = grab_port;
@@ -1424,6 +1433,10 @@ set_property (GObject *object, guint prop_id,
/* Construct only */
priv->name = g_value_dup_string (value);
break;
+ case PROP_SORT_LAST:
+ /* Construct only */
+ priv->sort_last = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1440,6 +1453,9 @@ get_property (GObject *object, guint prop_id,
case PROP_NAME:
g_value_set_string (value, priv->name);
break;
+ case PROP_SORT_LAST:
+ g_value_set_boolean (value, priv->sort_last);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1482,6 +1498,15 @@ mm_plugin_base_class_init (MMPluginBaseClass *klass)
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",
+ "Whether the plugin should be sorted last in the"
+ "list of plugins loaded",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
signals[PROBE_RESULT] =
g_signal_new ("probe-result",
G_OBJECT_CLASS_TYPE (object_class),