diff options
author | Aleksander Morgado <aleksander@gnu.org> | 2011-09-06 20:13:27 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:20 +0100 |
commit | fad89b1d7e88f742ecd1f94d78401cd558ecb65c (patch) | |
tree | 13456b5df9428211d88f786287014fdeb8568bfe /src | |
parent | 5f2d0d474cf9b4308715f4ef811127410e874240 (diff) |
plugin-manager: new methods to check for ongoing port support operations
The new mm_plugin_manager_is_finding_port_support() allows to check whether the
Plugin Manager is looking for support in a specific port.
The new mm_plugin_manager_is_checking_device_support() allows to check whether
the Plugin Manager is looking for support in any port of a given device.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-plugin-manager.c | 50 | ||||
-rw-r--r-- | src/mm-plugin-manager.h | 13 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/mm-plugin-manager.c b/src/mm-plugin-manager.c index 5d3f30fc..42d569c9 100644 --- a/src/mm-plugin-manager.c +++ b/src/mm-plugin-manager.c @@ -409,6 +409,56 @@ mm_plugin_manager_find_port_support (MMPluginManager *self, info); } +gboolean +mm_plugin_manager_is_finding_device_support (MMPluginManager *self, + const gchar *physdev_path, + const gchar **subsys, + const gchar **name) +{ + SupportsInfoList *list; + + list = g_hash_table_lookup (self->priv->supports, + physdev_path); + if (list) { + if (subsys) + *subsys = ((SupportsInfo *)list->info_list->data)->subsys; + if (name) + *name = ((SupportsInfo *)list->info_list->data)->name; + + return TRUE; + } + return FALSE; +} + +gboolean +mm_plugin_manager_is_finding_port_support (MMPluginManager *self, + const gchar *subsys, + const gchar *name, + const gchar *physdev_path) +{ + SupportsInfoList *list; + + list = g_hash_table_lookup (self->priv->supports, + physdev_path); + if (list) { + GSList *l; + + for (l = list->info_list; + l; + l = g_slist_next (l)) { + SupportsInfo *info = l->data; + + if (g_str_equal (subsys, info->subsys) && + g_str_equal (name, info->name)) { + /* Support check task already exists */ + return TRUE; + } + } + } + + return FALSE; +} + static MMPlugin * load_plugin (const gchar *path) { diff --git a/src/mm-plugin-manager.h b/src/mm-plugin-manager.h index 825e69c6..42f6a750 100644 --- a/src/mm-plugin-manager.h +++ b/src/mm-plugin-manager.h @@ -59,4 +59,17 @@ MMPlugin *mm_plugin_manager_find_port_support_finish (MMPluginManager *self, GAsyncResult *result, GError **error); +/* Returns TRUE if there is an ongoing find operation on the given port */ +gboolean mm_plugin_manager_is_finding_port_support (MMPluginManager *self, + const gchar *subsys, + const gchar *name, + const gchar *physdev_path); + +/* Returns TRUE if there is an ongoing find operation in a port of the given + * device (and if so, returns subsystem and name of the port) */ +gboolean mm_plugin_manager_is_finding_device_support (MMPluginManager *self, + const gchar *physdev_path, + const gchar **subsys, + const gchar **name); + #endif /* MM_PLUGIN_MANAGER_H */ |