diff options
author | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 15:07:45 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 15:07:45 +0000 |
commit | ecbbb94d56004ac934b3cad1b242c6218dbb1c15 (patch) | |
tree | 3dfad13241639cf94888ec8bc6246a99c2188462 | |
parent | 5a550695a2a650a4d3efe1de653a692c9b74cad9 (diff) | |
download | gvfs-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.c | 17 | ||||
-rw-r--r-- | daemon/gvfsjob.h | 5 |
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); |