summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2013-08-01 23:34:09 +0800
committerLAN-TW <lantw44@gmail.com>2013-08-01 23:34:09 +0800
commitcb68b632b19381916fec8b0697b2054fa7a23d87 (patch)
tree101dfefdac9b8b7222f8023d2ad9af300b080502
parent6349e872d129b2dd888e4f83d2e1e518055e8b13 (diff)
downloadgsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar.gz
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar.bz2
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar.lz
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar.xz
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.tar.zst
gsoc2013-libgnome-autoar-cb68b632b19381916fec8b0697b2054fa7a23d87.zip
Add asynchronous archives creating functions
-rw-r--r--gnome-autoar/autoar-create.c20
-rw-r--r--gnome-autoar/autoar-extract.c1
2 files changed, 21 insertions, 0 deletions
diff --git a/gnome-autoar/autoar-create.c b/gnome-autoar/autoar-create.c
index c65c0eb..7ac70d9 100644
--- a/gnome-autoar/autoar-create.c
+++ b/gnome-autoar/autoar-create.c
@@ -1173,7 +1173,27 @@ autoar_create_start (AutoarCreate *arcreate)
autoar_create_run (arcreate, FALSE);
}
+static void
+autoar_create_start_async_thread (GTask *task,
+ gpointer source_object,
+ gpointer task_data,
+ GCancellable *cancellable)
+{
+ AutoarCreate *arcreate = source_object;
+ autoar_create_run (arcreate, TRUE);
+ g_task_return_pointer (task, NULL, g_free);
+ g_object_unref (arextract);
+ g_object_unref (task);
+}
+
void
autoar_create_start_async (AutoarCreate *arcreate)
{
+ GTask *task;
+
+ g_object_ref (arcreate);
+
+ task = g_task_new (arcreate, NULL, NULL, NULL);
+ g_task_set_task_data (task, NULL, NULL);
+ g_task_run_in_thread (task, autoar_create_start_async_thread);
}
diff --git a/gnome-autoar/autoar-extract.c b/gnome-autoar/autoar-extract.c
index c343ee0..c6a8a08 100644
--- a/gnome-autoar/autoar-extract.c
+++ b/gnome-autoar/autoar-extract.c
@@ -1420,6 +1420,7 @@ autoar_extract_start_async_thread (GTask *task,
autoar_extract_run (arextract, TRUE);
g_task_return_pointer (task, NULL, g_free);
g_object_unref (arextract);
+ g_object_unref (task);
}