On Tue, Aug 19, 2014 at 06:06:22PM +0200, Timm Bäder wrote:
---
libvirt-gobject/libvirt-gobject-domain-snapshot.c | 59 +++++++++++++++++++++++
libvirt-gobject/libvirt-gobject-domain-snapshot.h | 11 +++++
libvirt-gobject/libvirt-gobject.sym | 2 +
3 files changed, 72 insertions(+)
diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c
b/libvirt-gobject/libvirt-gobject-domain-snapshot.c
index b071c5b..0dcbecc 100644
--- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c
+++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c
@@ -304,6 +304,65 @@ gboolean gvir_domain_snapshot_revert_to(GVirDomainSnapshot
*snapshot,
return TRUE;
}
+static void _revert_to_async_thread(GTask *task,
+ gpointer source_object,
+ gpointer task_data,
+ GCancellable *cancellable) {
+ GError *error = NULL;
+ gboolean status;
+
+ status = gvir_domain_snapshot_revert_to(source_object,
+ GPOINTER_TO_UINT(task_data),
+ cancellable,
+ &error);
+
+ if (status)
+ g_task_return_boolean(task, TRUE);
+ else
+ g_task_return_error(task, error);
+}
+
+
+/**
+ * gvir_domain_snapshot_revert_to_async:
+ * @snapshot: A #GVirDomainSnapshot
+ * @cancellable: (allow-none) (transfer none): cancellation object
+ * @callback: (scope async): The callback
+ * @user_data: (closure): Opaque data for callback
+ */
+void gvir_domain_snapshot_revert_to_async(GVirDomainSnapshot *snapshot,
+ guint flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data) {
+ GTask *task;
+
+ g_return_if_fail(GVIR_IS_DOMAIN_SNAPSHOT(snapshot));
+
+ task = g_task_new(snapshot, cancellable, callback, user_data);
+ g_task_set_task_data(task, GUINT_TO_POINTER(flags), NULL);
+ g_task_run_in_thread(task, _revert_to_async_thread);
+ g_object_unref(task);
+}
+
+
+
+/**
+ * gvir_domain_snapshot_revert_to_finished:
_finish, I'll fix that up before pushing.
Christophe