diff options
author | Dan Williams <dcbw@redhat.com> | 2010-04-05 12:26:12 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-04-05 12:26:12 -0700 |
commit | 49c363d83af84021f74f04c8141313d21e75821b (patch) | |
tree | bc1bd766f27b3691fb4e878f875faf00d22a58a3 /src | |
parent | 0108a36d27b84dee2bf1934f6d5403b7d683099a (diff) |
core: fix handling of deferred ports during probe
The next plugin logic was wrong when a previous plugin had already
claimed support for the port and the Generic plugin was next. In
that case, the code failed to call the functions to actually grab
the port.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-manager.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/mm-manager.c b/src/mm-manager.c index d3ebf6db..6a01cbd0 100644 --- a/src/mm-manager.c +++ b/src/mm-manager.c @@ -612,14 +612,17 @@ supports_callback (MMPlugin *plugin, next_plugin = MM_PLUGIN (info->cur_plugin->data); } + /* Don't bother with Generic if some other plugin already supports this port */ if (next_plugin) { const char *next_name = mm_plugin_get_name (next_plugin); - /* Try the next plugin, but don't bother with the Generic plugin if - * something already supports this port. - */ - if (!info->best_plugin || strcmp (next_name, MM_PLUGIN_GENERIC_NAME)) - try_supports_port (info->manager, next_plugin, existing, info); + if (info->best_plugin && strcmp (next_name, MM_PLUGIN_GENERIC_NAME)) + next_plugin = NULL; + } + + if (next_plugin) { + /* Try the next plugin */ + try_supports_port (info->manager, next_plugin, existing, info); } else { /* All done; let the best modem grab the port */ info->done_id = g_idle_add (do_grab_port, info); |