plugin: no need to take care of probing tasks ourselves
This commit is contained in:
@@ -87,12 +87,6 @@ enum {
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static char *
|
|
||||||
get_key (const char *subsys, const char *name)
|
|
||||||
{
|
|
||||||
return g_strdup_printf ("%s%s", subsys, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
mm_plugin_get_name (MMPlugin *plugin)
|
mm_plugin_get_name (MMPlugin *plugin)
|
||||||
{
|
{
|
||||||
@@ -370,7 +364,6 @@ port_probe_run_ready (MMPortProbe *probe,
|
|||||||
{
|
{
|
||||||
MMPluginPrivate *priv = MM_PLUGIN_GET_PRIVATE (ctx->plugin);
|
MMPluginPrivate *priv = MM_PLUGIN_GET_PRIVATE (ctx->plugin);
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gboolean keep_probe = FALSE;
|
|
||||||
|
|
||||||
if (!mm_port_probe_run_finish (probe, probe_result, &error)) {
|
if (!mm_port_probe_run_finish (probe, probe_result, &error)) {
|
||||||
/* Probing failed */
|
/* Probing failed */
|
||||||
@@ -380,10 +373,8 @@ port_probe_run_ready (MMPortProbe *probe,
|
|||||||
MMPluginSupportsResult supports_result;
|
MMPluginSupportsResult supports_result;
|
||||||
|
|
||||||
if (!apply_post_probing_filters (ctx->plugin, probe)) {
|
if (!apply_post_probing_filters (ctx->plugin, probe)) {
|
||||||
/* Port is supported! Leave it in the internal HT until port gets
|
/* Port is supported! */
|
||||||
* grabbed. */
|
|
||||||
supports_result = MM_PLUGIN_SUPPORTS_PORT_SUPPORTED;
|
supports_result = MM_PLUGIN_SUPPORTS_PORT_SUPPORTED;
|
||||||
keep_probe = TRUE;
|
|
||||||
|
|
||||||
/* If we were looking for AT ports, and the port is AT,
|
/* If we were looking for AT ports, and the port is AT,
|
||||||
* and we were told that only one AT port is expected, cancel AT
|
* and we were told that only one AT port is expected, cancel AT
|
||||||
@@ -400,7 +391,6 @@ port_probe_run_ready (MMPortProbe *probe,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* Unsupported port, remove from internal tracking HT */
|
/* Unsupported port, remove from internal tracking HT */
|
||||||
supports_result = MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
|
supports_result = MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
|
||||||
@@ -414,16 +404,6 @@ port_probe_run_ready (MMPortProbe *probe,
|
|||||||
/* Complete the async supports port request */
|
/* Complete the async supports port request */
|
||||||
g_simple_async_result_complete_in_idle (ctx->result);
|
g_simple_async_result_complete_in_idle (ctx->result);
|
||||||
|
|
||||||
/* If no longer needed, Remove probe from internal HT */
|
|
||||||
if (!keep_probe) {
|
|
||||||
gchar *key;
|
|
||||||
|
|
||||||
key = get_key (mm_port_probe_get_port_subsys (probe),
|
|
||||||
mm_port_probe_get_port_name (probe));
|
|
||||||
g_hash_table_remove (priv->tasks, key);
|
|
||||||
g_free (key);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (ctx->device);
|
g_object_unref (ctx->device);
|
||||||
g_object_unref (ctx->result);
|
g_object_unref (ctx->result);
|
||||||
g_object_unref (ctx->plugin);
|
g_object_unref (ctx->plugin);
|
||||||
@@ -458,7 +438,6 @@ mm_plugin_supports_port (MMPlugin *self,
|
|||||||
{
|
{
|
||||||
MMDevice *device = MM_DEVICE (device_o);
|
MMDevice *device = MM_DEVICE (device_o);
|
||||||
MMPluginPrivate *priv = MM_PLUGIN_GET_PRIVATE (self);
|
MMPluginPrivate *priv = MM_PLUGIN_GET_PRIVATE (self);
|
||||||
gchar *key = NULL;
|
|
||||||
MMPortProbe *probe;
|
MMPortProbe *probe;
|
||||||
GSimpleAsyncResult *async_result;
|
GSimpleAsyncResult *async_result;
|
||||||
PortProbeRunContext *ctx;
|
PortProbeRunContext *ctx;
|
||||||
@@ -466,10 +445,6 @@ mm_plugin_supports_port (MMPlugin *self,
|
|||||||
gboolean need_product_probing;
|
gboolean need_product_probing;
|
||||||
MMPortProbeFlag probe_run_flags;
|
MMPortProbeFlag probe_run_flags;
|
||||||
|
|
||||||
/* Setup key */
|
|
||||||
key = get_key (g_udev_device_get_subsystem (port),
|
|
||||||
g_udev_device_get_name (port));
|
|
||||||
|
|
||||||
async_result = g_simple_async_result_new (G_OBJECT (self),
|
async_result = g_simple_async_result_new (G_OBJECT (self),
|
||||||
callback,
|
callback,
|
||||||
user_data,
|
user_data,
|
||||||
@@ -504,12 +479,6 @@ mm_plugin_supports_port (MMPlugin *self,
|
|||||||
* TODO: With the new defer-until-suggested we probably don't need the modem
|
* TODO: With the new defer-until-suggested we probably don't need the modem
|
||||||
* object being passed down here just for this. */
|
* object being passed down here just for this. */
|
||||||
if (g_str_equal (g_udev_device_get_subsystem (port), "net")) {
|
if (g_str_equal (g_udev_device_get_subsystem (port), "net")) {
|
||||||
/* Keep track of the probe object, which is considered finished */
|
|
||||||
if (!g_hash_table_lookup (priv->tasks, key))
|
|
||||||
g_hash_table_insert (priv->tasks,
|
|
||||||
g_strdup (key),
|
|
||||||
g_object_ref (probe));
|
|
||||||
|
|
||||||
g_simple_async_result_set_op_res_gpointer (
|
g_simple_async_result_set_op_res_gpointer (
|
||||||
async_result,
|
async_result,
|
||||||
GUINT_TO_POINTER (MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED),
|
GUINT_TO_POINTER (MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED),
|
||||||
@@ -568,13 +537,7 @@ mm_plugin_supports_port (MMPlugin *self,
|
|||||||
(GAsyncReadyCallback)port_probe_run_ready,
|
(GAsyncReadyCallback)port_probe_run_ready,
|
||||||
ctx);
|
ctx);
|
||||||
|
|
||||||
/* Keep track of the probe. Note that we got a new reference already */
|
|
||||||
g_hash_table_insert (priv->tasks,
|
|
||||||
g_strdup (key),
|
|
||||||
probe);
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
g_free (key);
|
|
||||||
g_object_unref (async_result);
|
g_object_unref (async_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,7 +549,6 @@ mm_plugin_create_modem (MMPlugin *self,
|
|||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
MMDevice *device = MM_DEVICE (device_o);
|
MMDevice *device = MM_DEVICE (device_o);
|
||||||
MMPluginPrivate *priv = MM_PLUGIN_GET_PRIVATE (self);
|
|
||||||
MMBaseModem *modem = NULL;
|
MMBaseModem *modem = NULL;
|
||||||
GList *port_probes, *l;
|
GList *port_probes, *l;
|
||||||
|
|
||||||
@@ -624,15 +586,6 @@ mm_plugin_create_modem (MMPlugin *self,
|
|||||||
g_clear_object (&modem);
|
g_clear_object (&modem);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (l = port_probes; l; l = g_list_next (l)) {
|
|
||||||
gchar *key;
|
|
||||||
|
|
||||||
key = get_key (mm_port_probe_get_port_subsys (l->data),
|
|
||||||
mm_port_probe_get_port_name (l->data));
|
|
||||||
g_hash_table_remove (priv->tasks, key);
|
|
||||||
g_free (key);
|
|
||||||
}
|
|
||||||
|
|
||||||
return modem;
|
return modem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -647,10 +600,6 @@ mm_plugin_init (MMPlugin *self)
|
|||||||
* we just use this client for sync queries. */
|
* we just use this client for sync queries. */
|
||||||
priv->client = g_udev_client_new (NULL);
|
priv->client = g_udev_client_new (NULL);
|
||||||
|
|
||||||
priv->tasks = g_hash_table_new_full (g_str_hash,
|
|
||||||
g_str_equal,
|
|
||||||
g_free,
|
|
||||||
(GDestroyNotify) g_object_unref);
|
|
||||||
/* Defaults */
|
/* Defaults */
|
||||||
priv->send_delay = 100000;
|
priv->send_delay = 100000;
|
||||||
}
|
}
|
||||||
@@ -781,8 +730,6 @@ finalize (GObject *object)
|
|||||||
|
|
||||||
g_object_unref (priv->client);
|
g_object_unref (priv->client);
|
||||||
|
|
||||||
g_hash_table_destroy (priv->tasks);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (mm_plugin_parent_class)->finalize (object);
|
G_OBJECT_CLASS (mm_plugin_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user