aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 55752999..a2065a42 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -620,16 +620,26 @@ mm_base_modem_wait_link_port (MMBaseModem *self,
/******************************************************************************/
+gboolean
+mm_base_modem_sync_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return g_task_propagate_boolean (G_TASK (res), error);
+}
+
static void
-mm_base_modem_sync_ready (MMBaseModem *self,
- GAsyncResult *res)
+sync_ready (MMBaseModem *self,
+ GAsyncResult *res,
+ GTask *task)
{
- g_autoptr (GError) error = NULL;
+ g_autoptr(GError) error = NULL;
- MM_BASE_MODEM_GET_CLASS (self)->sync_finish (self, res, &error);
- if (error) {
- mm_obj_warn (self, "synchronization failed");
- }
+ if (!MM_BASE_MODEM_GET_CLASS (self)->sync_finish (self, res, &error))
+ g_task_return_error (task, error);
+ else
+ g_task_return_boolean (task, TRUE);
+ g_object_unref (task);
}
void
@@ -637,14 +647,20 @@ mm_base_modem_sync (MMBaseModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
+
g_assert (MM_BASE_MODEM_GET_CLASS (self)->sync != NULL);
g_assert (MM_BASE_MODEM_GET_CLASS (self)->sync_finish != NULL);
MM_BASE_MODEM_GET_CLASS (self)->sync (self,
- (GAsyncReadyCallback) mm_base_modem_sync_ready,
- NULL);
+ (GAsyncReadyCallback) sync_ready,
+ task);
}
+/******************************************************************************/
+
gboolean
mm_base_modem_disable_finish (MMBaseModem *self,
GAsyncResult *res,