summaryrefslogtreecommitdiff
path: root/io
diff options
context:
space:
mode:
Diffstat (limited to 'io')
-rw-r--r--io/task.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/io/task.c b/io/task.c
index a763990d47..675e196156 100644
--- a/io/task.c
+++ b/io/task.c
@@ -29,6 +29,8 @@ struct QIOTask {
QIOTaskFunc func;
gpointer opaque;
GDestroyNotify destroy;
+ gpointer result;
+ GDestroyNotify destroyResult;
};
@@ -57,6 +59,9 @@ static void qio_task_free(QIOTask *task)
if (task->destroy) {
task->destroy(task->opaque);
}
+ if (task->destroyResult) {
+ task->destroyResult(task->result);
+ }
object_unref(task->source);
g_free(task);
@@ -154,6 +159,21 @@ void qio_task_abort(QIOTask *task,
}
+void qio_task_set_result_pointer(QIOTask *task,
+ gpointer result,
+ GDestroyNotify destroy)
+{
+ task->result = result;
+ task->destroyResult = destroy;
+}
+
+
+gpointer qio_task_get_result_pointer(QIOTask *task)
+{
+ return task->result;
+}
+
+
Object *qio_task_get_source(QIOTask *task)
{
return task->source;