static void load_async_thread (GSimpleAsyncResult *res, GObject *object, GCancellable *cancellable) { GLoadableIconIface *iface; GInputStream *stream; LoadData *data; GError *error = NULL; char *type = NULL; data = g_simple_async_result_get_op_res_gpointer (res); iface = G_LOADABLE_ICON_GET_IFACE (object); stream = iface->load (G_LOADABLE_ICON (object), data->size, &type, cancellable, &error); if (stream == NULL) { g_simple_async_result_take_error (res, error); } else { data->stream = stream; data->type = type; } }
static void load_async_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { GLoadableIcon *icon = source_object; LoadData *data = task_data; GLoadableIconIface *iface; GInputStream *stream; GError *error = NULL; iface = G_LOADABLE_ICON_GET_IFACE (icon); stream = iface->load (icon, data->size, &data->type, cancellable, &error); if (stream) g_task_return_pointer (task, stream, g_object_unref); else g_task_return_error (task, error); }