[PATCH v2 06/13] spice-channel: Use GTask instead of GSimpleAsyncResult

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Instead of using GSimpleAsyncResult, use the new GTask API, which is
much more straightforward.
---
 src/spice-channel.c | 32 +++++++++++++-------------------
 1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/src/spice-channel.c b/src/spice-channel.c
index 1941b1b..418fc5a 100644
--- a/src/spice-channel.c
+++ b/src/spice-channel.c
@@ -2124,9 +2124,7 @@ static void spice_channel_flushed(SpiceChannel *channel, gboolean success)
     GSList *l;
 
     for (l = c->flushing; l != NULL; l = l->next) {
-        GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT(l->data);
-        g_simple_async_result_set_op_res_gboolean(result, success);
-        g_simple_async_result_complete_in_idle(result);
+        g_task_return_boolean(G_TASK(l->data), success);
     }
 
     g_slist_free_full(c->flushing, g_object_unref);
@@ -2970,7 +2968,7 @@ static void spice_channel_send_migration_handshake(SpiceChannel *channel)
 void spice_channel_flush_async(SpiceChannel *self, GCancellable *cancellable,
                                GAsyncReadyCallback callback, gpointer user_data)
 {
-    GSimpleAsyncResult *simple;
+    GTask *task;
     SpiceChannelPrivate *c;
     gboolean was_empty;
 
@@ -2978,26 +2976,25 @@ void spice_channel_flush_async(SpiceChannel *self, GCancellable *cancellable,
     c = self->priv;
 
     if (c->state != SPICE_CHANNEL_STATE_READY) {
-        g_simple_async_report_error_in_idle(G_OBJECT(self), callback, user_data,
+        g_task_report_new_error(self, callback, user_data,
+            spice_channel_flush_async,
             SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
             "The channel is not ready yet");
         return;
     }
 
-    simple = g_simple_async_result_new(G_OBJECT(self), callback, user_data,
-                                       spice_channel_flush_async);
+    task = g_task_new(self, cancellable, callback, user_data);
 
     STATIC_MUTEX_LOCK(c->xmit_queue_lock);
     was_empty = g_queue_is_empty(&c->xmit_queue);
     STATIC_MUTEX_UNLOCK(c->xmit_queue_lock);
     if (was_empty) {
-        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);
         return;
     }
 
-    c->flushing = g_slist_append(c->flushing, simple);
+    c->flushing = g_slist_append(c->flushing, task);
 }
 
 /**
@@ -3015,19 +3012,16 @@ void spice_channel_flush_async(SpiceChannel *self, GCancellable *cancellable,
 gboolean spice_channel_flush_finish(SpiceChannel *self, GAsyncResult *result,
                                     GError **error)
 {
-    GSimpleAsyncResult *simple;
+    GTask *task;
 
     g_return_val_if_fail(SPICE_IS_CHANNEL(self), FALSE);
     g_return_val_if_fail(result != NULL, FALSE);
 
-    simple = (GSimpleAsyncResult *)result;
+    task = G_TASK(result);
 
-    if (g_simple_async_result_propagate_error(simple, error))
-        return -1;
-
-    g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(self),
-                                                        spice_channel_flush_async), FALSE);
+    g_return_val_if_fail(g_task_is_valid(task, self),
+                         FALSE);
 
     CHANNEL_DEBUG(self, "flushed finished!");
-    return g_simple_async_result_get_op_res_gboolean(simple);
+    return g_task_propagate_boolean(task, error);
 }
-- 
2.5.0

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]