[libgdata] youtube: Port from GSimpleAsyncResult to GTask
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata] youtube: Port from GSimpleAsyncResult to GTask
- Date: Wed, 9 Aug 2017 14:18:07 +0000 (UTC)
commit 65ca44ccdfcc19011131fa98ed820a69f57b3286
Author: Philip Withnall <withnall endlessm com>
Date: Wed Aug 9 15:17:37 2017 +0100
youtube: Port from GSimpleAsyncResult to GTask
Signed-off-by: Philip Withnall <withnall endlessm com>
gdata/services/youtube/gdata-youtube-service.c | 41 +++++++++---------------
1 files changed, 15 insertions(+), 26 deletions(-)
---
diff --git a/gdata/services/youtube/gdata-youtube-service.c b/gdata/services/youtube/gdata-youtube-service.c
index cc8d14c..e408b2e 100644
--- a/gdata/services/youtube/gdata-youtube-service.c
+++ b/gdata/services/youtube/gdata-youtube-service.c
@@ -1159,20 +1159,18 @@ gdata_youtube_service_get_categories (GDataYouTubeService *self, GCancellable *c
}
static void
-get_categories_thread (GSimpleAsyncResult *result, GDataYouTubeService *service, GCancellable *cancellable)
+get_categories_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable)
{
- GDataAPPCategories *categories;
- GError *error = NULL;
+ GDataYouTubeService *service = GDATA_YOUTUBE_SERVICE (source_object);
+ g_autoptr(GDataAPPCategories) categories = NULL;
+ g_autoptr(GError) error = NULL;
/* Get the categories and return */
categories = gdata_youtube_service_get_categories (service, cancellable, &error);
- if (error != NULL) {
- g_simple_async_result_set_from_error (result, error);
- g_error_free (error);
- return;
- }
-
- g_simple_async_result_set_op_res_gpointer (result, categories, (GDestroyNotify) g_object_unref);
+ if (error != NULL)
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&categories), g_object_unref);
}
/**
@@ -1195,15 +1193,15 @@ get_categories_thread (GSimpleAsyncResult *result, GDataYouTubeService *service,
void
gdata_youtube_service_get_categories_async (GDataYouTubeService *self, GCancellable *cancellable,
GAsyncReadyCallback callback, gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_autoptr(GTask) task = NULL;
g_return_if_fail (GDATA_IS_YOUTUBE_SERVICE (self));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
g_return_if_fail (callback != NULL);
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
gdata_youtube_service_get_categories_async);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) get_categories_thread,
G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdata_youtube_service_get_categories_async);
+ g_task_run_in_thread (task, get_categories_thread);
}
/**
@@ -1221,20 +1219,11 @@ gdata_youtube_service_get_categories_async (GDataYouTubeService *self, GCancella
GDataAPPCategories *
gdata_youtube_service_get_categories_finish (GDataYouTubeService *self, GAsyncResult *async_result, GError
**error)
{
- GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
- GDataAPPCategories *categories;
-
g_return_val_if_fail (GDATA_IS_YOUTUBE_SERVICE (self), NULL);
g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_task_is_valid (async_result, self), NULL);
+ g_return_val_if_fail (g_async_result_is_tagged (async_result,
gdata_youtube_service_get_categories_async), NULL);
- g_warn_if_fail (g_simple_async_result_get_source_tag (result) ==
gdata_youtube_service_get_categories_async);
-
- if (g_simple_async_result_propagate_error (result, error) == TRUE)
- return NULL;
-
- categories = g_simple_async_result_get_op_res_gpointer (result);
- if (categories != NULL)
- return g_object_ref (categories);
- return NULL;
+ return g_task_propagate_pointer (G_TASK (async_result), error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]