summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabiano Fidêncio <fidencio@redhat.com>2016-01-14 14:55:52 +0100
committerFabiano Fidêncio <fidencio@redhat.com>2016-03-14 22:46:30 +0100
commit8693e7d3f7de1ff102082212fa6e35fb1a252ef7 (patch)
tree6f11c9f01a5e45c1c4cf936aff20f26be7dc2152
parent6d8ca210d89e4dc7bed90534e91e1c3650e00d2a (diff)
downloadspice-gtk-8693e7d3f7de1ff102082212fa6e35fb1a252ef7.tar.gz
spice-gtk-8693e7d3f7de1ff102082212fa6e35fb1a252ef7.tar.xz
spice-gtk-8693e7d3f7de1ff102082212fa6e35fb1a252ef7.zip
channel-base: Use GTask instead of GSimpleAsyncResult
Instead of using GSimpleAsyncResult, use the new GTask API, which is much more straightforward. For using the new GTask API, let's bump GIO (part of GLib) dependency version to 2.36, which is safe based on major distro support: - Debian Jessie: glib-2.42 - RHEL-7.1: glib-2.40 - SLES12: glib-2.38 - Ubuntu LTS 14.04: glib-2.40 Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r--configure.ac6
-rw-r--r--src/channel-base.c29
2 files changed, 16 insertions, 19 deletions
diff --git a/configure.ac b/configure.ac
index 964ee63..6983b6b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,7 +166,7 @@ fi
AC_CHECK_FUNCS(clearenv strtok_r)
-PKG_CHECK_MODULES(GLIB2, glib-2.0 >= 2.28)
+PKG_CHECK_MODULES(GLIB2, glib-2.0)
AC_SUBST(GLIB2_CFLAGS)
AC_SUBST(GLIB2_LIBS)
@@ -174,7 +174,7 @@ PKG_CHECK_MODULES(GOBJECT2, gobject-2.0)
AC_SUBST(GOBJECT2_CFLAGS)
AC_SUBST(GOBJECT2_LIBS)
-PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.10.0 $gio_os)
+PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.36 $gio_os)
AC_SUBST(GIO_CFLAGS)
AC_SUBST(GIO_LIBS)
@@ -182,7 +182,7 @@ PKG_CHECK_MODULES(CAIRO, cairo >= 1.2.0)
AC_SUBST(CAIRO_CFLAGS)
AC_SUBST(CAIRO_LIBS)
-PKG_CHECK_MODULES(GTHREAD, gthread-2.0 > 2.0.0)
+PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
AC_SUBST(GTHREAD_CFLAGS)
AC_SUBST(GTHREAD_LIBS)
diff --git a/src/channel-base.c b/src/channel-base.c
index 13e4ced..de04b89 100644
--- a/src/channel-base.c
+++ b/src/channel-base.c
@@ -240,10 +240,12 @@ void spice_channel_set_handlers(SpiceChannelClass *klass,
static void
vmc_write_free_cb(uint8_t *data, void *user_data)
{
- GSimpleAsyncResult *result = user_data;
+ GTask *task = user_data;
+ gsize count = GPOINTER_TO_SIZE(g_task_get_task_data(task));
- g_simple_async_result_complete_in_idle(result);
- g_object_unref(result);
+ g_task_return_int(task, count);
+
+ g_object_unref(task);
}
G_GNUC_INTERNAL
@@ -254,15 +256,14 @@ void spice_vmc_write_async(SpiceChannel *self,
gpointer user_data)
{
SpiceMsgOut *msg;
- GSimpleAsyncResult *simple;
+ GTask *task;
- simple = g_simple_async_result_new(G_OBJECT(self), callback, user_data,
- spice_port_write_async);
- g_simple_async_result_set_op_res_gssize(simple, count);
+ task = g_task_new(self, cancellable, callback, user_data);
+ g_task_set_task_data(task, GSIZE_TO_POINTER(count), NULL);
msg = spice_msg_out_new(SPICE_CHANNEL(self), SPICE_MSGC_SPICEVMC_DATA);
spice_marshaller_add_ref_full(msg->marshaller, (uint8_t*)buffer, count,
- vmc_write_free_cb, simple);
+ vmc_write_free_cb, task);
spice_msg_out_send(msg);
}
@@ -270,17 +271,13 @@ G_GNUC_INTERNAL
gssize spice_vmc_write_finish(SpiceChannel *self,
GAsyncResult *result, GError **error)
{
- GSimpleAsyncResult *simple;
+ GTask *task;
g_return_val_if_fail(result != NULL, -1);
- simple = (GSimpleAsyncResult *)result;
-
- if (g_simple_async_result_propagate_error(simple, error))
- return -1;
+ task = G_TASK(result);
- g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(self),
- spice_port_write_async), -1);
+ g_return_val_if_fail(g_task_is_valid(task, self), -1);
- return g_simple_async_result_get_op_res_gssize(simple);
+ return g_task_propagate_int(task, error);
}