aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-iface-modem.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 01c5f69b..32a5610e 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -1631,6 +1631,21 @@ static gboolean periodic_signal_check_run (MMIfaceModem *self);
static void periodic_signal_check_step (GTask *task);
static void
+periodic_signal_check_complete (GTask *task)
+{
+ MMIfaceModem *self;
+ Private *priv;
+
+ self = g_task_get_source_object (task);
+ priv = get_private (self);
+ g_assert (priv->signal_check_running);
+ priv->signal_check_running = FALSE;
+
+ g_task_return_boolean (task, TRUE);
+ g_object_unref (task);
+}
+
+static void
load_access_technologies_ready (MMIfaceModem *self,
GAsyncResult *res,
GTask *task)
@@ -1739,8 +1754,7 @@ periodic_signal_check_step (GTask *task)
* do anything else. */
if (!priv->signal_check_enabled) {
mm_obj_dbg (self, "periodic signal quality and access technology checks not rescheduled: disabled");
- g_task_return_boolean (task, FALSE);
- g_object_unref (task);
+ periodic_signal_check_complete (task);
return;
}
@@ -1781,8 +1795,7 @@ periodic_signal_check_step (GTask *task)
self);
}
- g_task_return_boolean (task, TRUE);
- g_object_unref (task);
+ periodic_signal_check_complete (task);
return;
default:
@@ -1808,6 +1821,9 @@ periodic_signal_check_run (MMIfaceModem *self)
ctx->access_technologies_mask = MM_MODEM_ACCESS_TECHNOLOGY_ANY;
g_task_set_task_data (task, ctx, (GDestroyNotify) g_free);
+ g_assert (!priv->signal_check_running);
+ priv->signal_check_running = TRUE;
+
periodic_signal_check_step (task);
/* Reset the source id as we're removing the timeout source */
@@ -1836,7 +1852,6 @@ mm_iface_modem_refresh_signal (MMIfaceModem *self)
}
mm_obj_dbg (self, "periodic signal check refresh requested");
- priv->signal_check_running = TRUE;
/* Remove the scheduled timeout as we're going to refresh
* right away */