diff options
author | Tomas Bzatek <tbzatek@redhat.com> | 2010-09-08 18:13:20 +0200 |
---|---|---|
committer | Tomas Bzatek <tbzatek@redhat.com> | 2010-09-08 18:13:20 +0200 |
commit | 5c060227daefafb6c0751422fa585483fc861515 (patch) | |
tree | 3d123024896e4db457bd7936f72d80f7bdae7bb5 | |
parent | 8d0e25efd0df403fcdbffbf610e020d26cbb01ff (diff) | |
download | gvfs-5c060227daefafb6c0751422fa585483fc861515.tar.gz |
Move GConf initialization from backend constructor
Solve the deadlock described in bug 628889
-rw-r--r-- | daemon/gvfsbackendsmb.c | 43 | ||||
-rw-r--r-- | daemon/gvfsbackendsmbbrowse.c | 47 |
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 |