summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@src.gnome.org>2007-09-13 15:07:45 +0000
committerAlexander Larsson <alexl@src.gnome.org>2007-09-13 15:07:45 +0000
commitecbbb94d56004ac934b3cad1b242c6218dbb1c15 (patch)
tree3dfad13241639cf94888ec8bc6246a99c2188462
parent5a550695a2a650a4d3efe1de653a692c9b74cad9 (diff)
downloadgvfs-ecbbb94d56004ac934b3cad1b242c6218dbb1c15.tar.gz
Add backend_data destructor
Original git commit by Alexander Larsson <alexl@redhat.com> at 1189499642 +0200 svn path=/trunk/; revision=916
-rw-r--r--daemon/gvfsjob.c17
-rw-r--r--daemon/gvfsjob.h5
2 files changed, 22 insertions, 0 deletions
diff --git a/daemon/gvfsjob.c b/daemon/gvfsjob.c
index f91aa62c..22ff91b9 100644
--- a/daemon/gvfsjob.c
+++ b/daemon/gvfsjob.c
@@ -54,6 +54,9 @@ g_vfs_job_finalize (GObject *object)
if (job->error)
g_error_free (job->error);
+
+ if (job->backend_data_destroy)
+ job->backend_data_destroy (job->backend_data);
if (G_OBJECT_CLASS (g_vfs_job_parent_class)->finalize)
(*G_OBJECT_CLASS (g_vfs_job_parent_class)->finalize) (object);
@@ -111,6 +114,20 @@ g_vfs_job_init (GVfsJob *job)
}
+void
+g_vfs_job_set_backend_data (GVfsJob *job,
+ gpointer backend_data,
+ GDestroyNotify destroy)
+{
+ if (job->backend_data_destroy)
+ {
+ job->backend_data_destroy (job->backend_data);
+ }
+
+ job->backend_data = backend_data;
+ job->backend_data_destroy = destroy;
+}
+
static void
g_vfs_job_set_property (GObject *object,
guint prop_id,
diff --git a/daemon/gvfsjob.h b/daemon/gvfsjob.h
index a8df37fa..be41ccb7 100644
--- a/daemon/gvfsjob.h
+++ b/daemon/gvfsjob.h
@@ -25,6 +25,8 @@ struct _GVfsJob
/* TODO: Move stuff to private */
gpointer backend_data;
+ GDestroyNotify backend_data_destroy;
+
guint failed : 1;
guint cancelled : 1;
guint sent_reply : 1;
@@ -53,6 +55,9 @@ struct _GVfsJobClass
GType g_vfs_job_get_type (void) G_GNUC_CONST;
+void g_vfs_job_set_backend_data (GVfsJob *job,
+ gpointer backend_data,
+ GDestroyNotify destroy);
gboolean g_vfs_job_is_finished (GVfsJob *job);
gboolean g_vfs_job_is_cancelled (GVfsJob *job);
void g_vfs_job_cancel (GVfsJob *job);