[gnome-online-accounts] provider: Port goa_provider_ensure_credentials() to GTask
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts] provider: Port goa_provider_ensure_credentials() to GTask
- Date: Thu, 28 Apr 2016 14:50:55 +0000 (UTC)
commit 918fc4ef03e1fb7727c1707efcea2e533e1433fc
Author: Christophe Fergeau <cfergeau redhat com>
Date: Mon Nov 23 17:37:15 2015 +0100
provider: Port goa_provider_ensure_credentials() to GTask
https://bugzilla.gnome.org/show_bug.cgi?id=764157
src/goabackend/goaprovider.c | 52 +++++++++++++++++++++++------------------
1 files changed, 29 insertions(+), 23 deletions(-)
---
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index 169e1a6..a07376e 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -652,14 +652,15 @@ ensure_credentials_data_free (EnsureCredentialsData *data)
}
static void
-ensure_credentials_in_thread_func (GSimpleAsyncResult *simple,
- GObject *object,
+ensure_credentials_in_thread_func (GTask *task,
+ gpointer object,
+ gpointer task_data,
GCancellable *cancellable)
{
EnsureCredentialsData *data;
GError *error;
- data = g_simple_async_result_get_op_res_gpointer (simple);
+ data = task_data;
error = NULL;
if (!goa_provider_ensure_credentials_sync (GOA_PROVIDER (object),
@@ -667,7 +668,9 @@ ensure_credentials_in_thread_func (GSimpleAsyncResult *simple,
&data->expires_in,
cancellable,
&error))
- g_simple_async_result_take_error (simple, error);
+ g_task_return_error (task, error);
+ else
+ g_task_return_boolean (task, TRUE);
}
@@ -698,24 +701,23 @@ goa_provider_ensure_credentials (GoaProvider *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *simple;
+ GTask *task;
g_return_if_fail (GOA_IS_PROVIDER (self));
g_return_if_fail (GOA_IS_OBJECT (object));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- simple = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- goa_provider_ensure_credentials);
- g_simple_async_result_set_op_res_gpointer (simple,
- ensure_credentials_data_new (object),
- (GDestroyNotify) ensure_credentials_data_free);
- g_simple_async_result_run_in_thread (simple,
- ensure_credentials_in_thread_func,
- G_PRIORITY_DEFAULT,
- cancellable);
- g_object_unref (simple);
+ task = g_task_new (G_OBJECT (self),
+ cancellable,
+ callback,
+ user_data);
+ g_task_set_task_data (task,
+ ensure_credentials_data_new (object),
+ (GDestroyNotify) ensure_credentials_data_free);
+ g_task_set_source_tag(task, goa_provider_ensure_credentials);
+ g_task_run_in_thread (task, ensure_credentials_in_thread_func);
+
+ g_object_unref (task);
}
/**
@@ -735,23 +737,27 @@ goa_provider_ensure_credentials_finish (GoaProvider *self,
GAsyncResult *res,
GError **error)
{
- GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+ GTask *task = G_TASK (res);
+ gboolean had_error;
+
gboolean ret;
EnsureCredentialsData *data;
ret = FALSE;
g_return_val_if_fail (GOA_IS_PROVIDER (self), FALSE);
- g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE);
+ g_return_val_if_fail (g_task_is_valid (res, self), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == goa_provider_ensure_credentials);
+ g_warn_if_fail (g_task_get_source_tag (task) == goa_provider_ensure_credentials);
- if (g_simple_async_result_propagate_error (simple, error))
+ /* Workaround for bgo#764163 */
+ had_error = g_task_had_error (task);
+ ret = g_task_propagate_boolean (task, error);
+ if (had_error)
goto out;
- ret = TRUE;
- data = g_simple_async_result_get_op_res_gpointer (simple);
+ data = g_task_get_task_data (task);
if (out_expires_in != NULL)
*out_expires_in = data->expires_in;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]