aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-plugin-manager.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/mm-plugin-manager.c b/src/mm-plugin-manager.c
index 16e1e786..175762e7 100644
--- a/src/mm-plugin-manager.c
+++ b/src/mm-plugin-manager.c
@@ -331,12 +331,24 @@ supports_port_ready_cb (MMPlugin *plugin,
break;
case MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED:
- /* We are deferred until a suggested plugin is given. If last supports task
- * of a given device is finished without finding a best plugin, this task
- * will get finished reporting unsupported. */
- mm_dbg ("(%s) deferring support check until result suggested",
- info->name);
- info->defer_until_suggested = TRUE;
+ /* If we arrived here and we already have a plugin suggested, use it */
+ if (info->suggested_plugin) {
+ mm_dbg ("(%s): (%s) task completed, got suggested plugin",
+ mm_plugin_get_name (info->suggested_plugin),
+ info->name);
+ /* Schedule checking support, which will end the operation */
+ info->best_plugin = info->suggested_plugin;
+ info->current = NULL;
+ info->source_id = g_idle_add ((GSourceFunc)find_port_support_idle,
+ info);
+ } else {
+ /* We are deferred until a suggested plugin is given. If last supports task
+ * of a given device is finished without finding a best plugin, this task
+ * will get finished reporting unsupported. */
+ mm_dbg ("(%s) deferring support check until result suggested",
+ info->name);
+ info->defer_until_suggested = TRUE;
+ }
break;
}
}