[Spice-devel] [PATCH 06/14] spice-channel: Use GTask instead of GSimpleAsyncResult

Christophe Fergeau cfergeau at redhat.com
Mon Jan 18 05:44:55 PST 2016


Acked-by: Christophe Fergeau <cfergeau at redhat.com>

On Mon, Jan 18, 2016 at 10:05:42AM +0100, Fabiano FidĂȘncio wrote:
> 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 ff85715..dd32818 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20160118/86d51a4f/attachment.sig>


More information about the Spice-devel mailing list