[gnome-bluetooth/wip/hadess/cleanups: 19/24] lib: Port bluetooth_client_setup_device() to GTask
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-bluetooth/wip/hadess/cleanups: 19/24] lib: Port bluetooth_client_setup_device() to GTask
- Date: Wed, 17 Feb 2021 11:02:24 +0000 (UTC)
commit c6c4d1f1db506cbe02d4daa1d966d6ace0d762b8
Author: Bastien Nocera <hadess hadess net>
Date: Thu Feb 11 11:33:03 2021 +0100
lib: Port bluetooth_client_setup_device() to GTask
lib/bluetooth-client.c | 63 +++++++++++++++++++++-----------------------------
1 file changed, 26 insertions(+), 37 deletions(-)
---
diff --git a/lib/bluetooth-client.c b/lib/bluetooth-client.c
index 6376bf3d..b9084c2f 100644
--- a/lib/bluetooth-client.c
+++ b/lib/bluetooth-client.c
@@ -1356,9 +1356,9 @@ typedef struct {
} CreateDeviceData;
static void
-device_pair_callback (GDBusProxy *proxy,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
+device_pair_callback (GDBusProxy *proxy,
+ GAsyncResult *res,
+ GTask *task)
{
GError *error = NULL;
@@ -1366,14 +1366,11 @@ device_pair_callback (GDBusProxy *proxy,
g_debug ("Pair() failed for %s: %s",
g_dbus_proxy_get_object_path (proxy),
error->message);
- g_simple_async_result_take_error (simple, error);
+ g_task_return_error (task, error);
} else {
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
+ g_task_return_boolean (task, TRUE);
}
-
- g_simple_async_result_complete_in_idle (simple);
-
- g_object_unref (simple);
+ g_object_unref (task);
}
/**
@@ -1389,27 +1386,22 @@ bluetooth_client_setup_device_finish (BluetoothClient *client,
char **path,
GError **error)
{
- GSimpleAsyncResult *simple;
+ GTask *task;
char *object_path;
gboolean ret;
g_return_val_if_fail (path != NULL, FALSE);
- simple = (GSimpleAsyncResult *) res;
+ task = G_TASK (res);
- g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == bluetooth_client_setup_device);
+ g_warn_if_fail (g_task_get_source_tag (task) == bluetooth_client_setup_device);
- ret = g_simple_async_result_get_op_res_gboolean (simple);
- object_path = g_strdup (g_object_get_data (G_OBJECT (res), "device-object-path"));
+ ret = g_task_propagate_boolean (task, error);
+ object_path = g_strdup (g_task_get_task_data (task));
*path = object_path;
g_debug ("bluetooth_client_setup_device_finish() %s (path: %s)",
ret ? "success" : "failure", object_path);
-
- if (ret)
- return TRUE;
-
- g_simple_async_result_propagate_error (simple, error);
- return FALSE;
+ return ret;
}
void
@@ -1421,27 +1413,25 @@ bluetooth_client_setup_device (BluetoothClient *client,
gpointer user_data)
{
BluetoothClientPrivate *priv = BLUETOOTH_CLIENT_GET_PRIVATE(client);
- GSimpleAsyncResult *simple;
+ GTask *task;
g_autoptr(GDBusProxy) device = NULL;
GtkTreeIter iter, adapter_iter;
gboolean paired;
g_return_if_fail (BLUETOOTH_IS_CLIENT (client));
- simple = g_simple_async_result_new (G_OBJECT (client),
- callback,
- user_data,
- bluetooth_client_setup_device);
- g_simple_async_result_set_check_cancellable (simple, cancellable);
- g_object_set_data_full (G_OBJECT (simple), "device-object-path",
- g_strdup (path), (GDestroyNotify) g_free);
+ task = g_task_new (G_OBJECT (client),
+ cancellable,
+ callback,
+ user_data);
+ g_task_set_source_tag (task, bluetooth_client_setup_device);
+ g_task_set_task_data (task, g_strdup (path), (GDestroyNotify) g_free);
if (get_iter_from_path (priv->store, &iter, path) == FALSE) {
- g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
- "Device with object path %s does not exist",
- path);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
+ g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ "Device with object path %s does not exist",
+ path);
+ g_object_unref (task);
return;
}
@@ -1469,11 +1459,10 @@ bluetooth_client_setup_device (BluetoothClient *client,
device1_call_pair (DEVICE1(device),
cancellable,
(GAsyncReadyCallback) device_pair_callback,
- simple);
+ task);
} else {
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
+ g_task_return_boolean (task, TRUE);
+ g_object_unref (task);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]