summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2010-09-08 18:13:20 +0200
committerTomas Bzatek <tbzatek@redhat.com>2010-09-08 18:13:20 +0200
commit5c060227daefafb6c0751422fa585483fc861515 (patch)
tree3d123024896e4db457bd7936f72d80f7bdae7bb5
parent8d0e25efd0df403fcdbffbf610e020d26cbb01ff (diff)
downloadgvfs-5c060227daefafb6c0751422fa585483fc861515.tar.gz
Move GConf initialization from backend constructor
Solve the deadlock described in bug 628889
-rw-r--r--daemon/gvfsbackendsmb.c43
-rw-r--r--daemon/gvfsbackendsmbbrowse.c47
2 files changed, 45 insertions, 45 deletions
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
index 88dac26f..a4010c53 100644
--- a/daemon/gvfsbackendsmb.c
+++ b/daemon/gvfsbackendsmb.c
@@ -121,6 +121,27 @@ g_vfs_backend_smb_finalize (GObject *object)
static void
g_vfs_backend_smb_init (GVfsBackendSmb *backend)
{
+#ifdef HAVE_GCONF
+ GConfClient *gclient;
+#endif
+
+#ifdef HAVE_GCONF
+ gclient = gconf_client_get_default ();
+ if (gclient)
+ {
+ char *workgroup;
+
+ workgroup = gconf_client_get_string (gclient,
+ PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL);
+
+ if (workgroup && workgroup[0])
+ default_workgroup = workgroup;
+ else
+ g_free (workgroup);
+
+ g_object_unref (gclient);
+ }
+#endif
}
/**
@@ -2109,9 +2130,6 @@ g_vfs_backend_smb_class_init (GVfsBackendSmbClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GVfsBackendClass *backend_class = G_VFS_BACKEND_CLASS (klass);
-#ifdef HAVE_GCONF
- GConfClient *gclient;
-#endif
gobject_class->finalize = g_vfs_backend_smb_finalize;
@@ -2138,25 +2156,6 @@ g_vfs_backend_smb_class_init (GVfsBackendSmbClass *klass)
backend_class->move = do_move;
backend_class->try_query_settable_attributes = try_query_settable_attributes;
backend_class->set_attribute = do_set_attribute;
-
-#ifdef HAVE_GCONF
- gclient = gconf_client_get_default ();
- if (gclient)
- {
- char *workgroup;
-
- workgroup = gconf_client_get_string (gclient,
- PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL);
-
- if (workgroup && workgroup[0])
- default_workgroup = workgroup;
- else
- g_free (workgroup);
-
- g_object_unref (gclient);
- }
-#endif
-
}
void
diff --git a/daemon/gvfsbackendsmbbrowse.c b/daemon/gvfsbackendsmbbrowse.c
index 97d3c998..dd3dc2a4 100644
--- a/daemon/gvfsbackendsmbbrowse.c
+++ b/daemon/gvfsbackendsmbbrowse.c
@@ -247,11 +247,35 @@ g_vfs_backend_smb_browse_finalize (GObject *object)
static void
g_vfs_backend_smb_browse_init (GVfsBackendSmbBrowse *backend)
{
+#ifdef HAVE_GCONF
+ GConfClient *gclient;
+#endif
+
backend->entries_lock = g_mutex_new ();
backend->update_cache_lock = g_mutex_new ();
if (mount_tracker == NULL)
mount_tracker = g_mount_tracker_new (NULL);
+
+#ifdef HAVE_GCONF
+ gclient = gconf_client_get_default ();
+ if (gclient)
+ {
+ char *workgroup;
+
+ workgroup = gconf_client_get_string (gclient,
+ PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL);
+
+ if (workgroup && workgroup[0])
+ default_workgroup = workgroup;
+ else
+ g_free (workgroup);
+
+ g_object_unref (gclient);
+ }
+#endif
+
+ DEBUG ("g_vfs_backend_smb_browse_init: default workgroup = '%s'\n", default_workgroup ? default_workgroup : "NULL");
}
/**
@@ -1456,9 +1480,6 @@ g_vfs_backend_smb_browse_class_init (GVfsBackendSmbBrowseClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GVfsBackendClass *backend_class = G_VFS_BACKEND_CLASS (klass);
-#ifdef HAVE_GCONF
- GConfClient *gclient;
-#endif
gobject_class->finalize = g_vfs_backend_smb_browse_finalize;
@@ -1475,26 +1496,6 @@ g_vfs_backend_smb_browse_class_init (GVfsBackendSmbBrowseClass *klass)
backend_class->try_query_info = try_query_info;
backend_class->enumerate = do_enumerate;
backend_class->try_enumerate = try_enumerate;
-
-#ifdef HAVE_GCONF
- gclient = gconf_client_get_default ();
- if (gclient)
- {
- char *workgroup;
-
- workgroup = gconf_client_get_string (gclient,
- PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL);
-
- if (workgroup && workgroup[0])
- default_workgroup = workgroup;
- else
- g_free (workgroup);
-
- g_object_unref (gclient);
- }
-#endif
-
- DEBUG ("g_vfs_backend_smb_browse_class_init - default workgroup = '%s'\n", default_workgroup ? default_workgroup : "NULL");
}
void