[gcr/wip/nielsdg/initial-gtask: 14/21] gcr-certificate-chain: Port to GTask
- From: Niels De Graef <nielsdg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcr/wip/nielsdg/initial-gtask: 14/21] gcr-certificate-chain: Port to GTask
- Date: Tue, 21 Jan 2020 17:32:39 +0000 (UTC)
commit 693d5a3704b8509a13cf2172eff9d658f0461a90
Author: Niels De Graef <nielsdegraef gmail com>
Date: Sun Dec 22 09:52:53 2019 +0100
gcr-certificate-chain: Port to GTask
gcr/gcr-certificate-chain.c | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
---
diff --git a/gcr/gcr-certificate-chain.c b/gcr/gcr-certificate-chain.c
index 1eb1af2..1793869 100644
--- a/gcr/gcr-certificate-chain.c
+++ b/gcr/gcr-certificate-chain.c
@@ -372,19 +372,21 @@ perform_build_chain (GcrCertificateChainPrivate *pv, GCancellable *cancellable,
}
static void
-thread_build_chain (GSimpleAsyncResult *result, GObject *object,
+thread_build_chain (GTask *task, gpointer src_object, gpointer task_data,
GCancellable *cancellable)
{
GcrCertificateChainPrivate *pv;
GError *error = NULL;
- pv = g_object_get_qdata (G_OBJECT (result), Q_OPERATION_DATA);
+ pv = g_object_get_qdata (G_OBJECT (task), Q_OPERATION_DATA);
g_assert (pv);
g_debug ("building asynchronously in another thread");
- if (!perform_build_chain (pv, cancellable, &error)) {
- g_simple_async_result_set_from_error (result, error);
+ if (perform_build_chain (pv, cancellable, &error)) {
+ g_task_return_boolean (task, TRUE);
+ } else {
+ g_task_return_error (task, g_steal_pointer (&error));
g_clear_error (&error);
}
}
@@ -784,22 +786,19 @@ gcr_certificate_chain_build_async (GcrCertificateChain *self,
gpointer user_data)
{
GcrCertificateChainPrivate *pv;
- GSimpleAsyncResult *result;
-
- g_return_if_fail (GCR_IS_CERTIFICATE_CHAIN (self));
+ GTask *task;
g_return_if_fail (GCR_IS_CERTIFICATE_CHAIN (self));
g_return_if_fail (purpose);
pv = prep_chain_private_thread_safe (self->pv, purpose, peer, flags);
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
- gcr_certificate_chain_build_async);
- g_object_set_qdata_full (G_OBJECT (result), Q_OPERATION_DATA, pv, free_chain_private);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gcr_certificate_chain_build_async);
+ g_object_set_qdata_full (G_OBJECT (task), Q_OPERATION_DATA, pv, free_chain_private);
- g_simple_async_result_run_in_thread (result, thread_build_chain,
- G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ g_task_run_in_thread (task, thread_build_chain);
+ g_clear_object (&task);
}
/**
@@ -820,11 +819,9 @@ gcr_certificate_chain_build_finish (GcrCertificateChain *self, GAsyncResult *res
GcrCertificateChainPrivate *pv;
g_return_val_if_fail (GCR_IS_CERTIFICATE_CHAIN (self), FALSE);
- g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (self),
- gcr_certificate_chain_build_async), FALSE);
+ g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
- if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
+ if (!g_task_propagate_boolean (G_TASK (result), error))
return FALSE;
pv = g_object_steal_qdata (G_OBJECT (result), Q_OPERATION_DATA);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]