summaryrefslogtreecommitdiff
path: root/gsettings-backend
diff options
context:
space:
mode:
authorAli Abdallah <aabdallah@suse.de>2020-05-02 11:12:44 +0200
committerAli Abdallah <aabdallah@suse.de>2020-05-02 11:12:44 +0200
commitdc443372218d9cc4a5daf5c416d767f445f7f9ce (patch)
treefde3b94d89a2398dc0c6063390e8c59303992eb1 /gsettings-backend
parent79bdf666dfa6a6f38489d6c62347d4a6d5820c60 (diff)
downloadxfconf-dc443372218d9cc4a5daf5c416d767f445f7f9ce.tar.gz
Initialize Xfconf when the backend is to be used
Previously, xfconf_init was called on g_io_module_load. But this will fatally fail on systems with no xfconfd running. See Bug #14789 for more details.
Diffstat (limited to 'gsettings-backend')
-rw-r--r--gsettings-backend/xfconf-giomodule.c9
-rw-r--r--gsettings-backend/xfconf-gsettings-backend.c9
2 files changed, 9 insertions, 9 deletions
diff --git a/gsettings-backend/xfconf-giomodule.c b/gsettings-backend/xfconf-giomodule.c
index 6ca44fd..d8e847a 100644
--- a/gsettings-backend/xfconf-giomodule.c
+++ b/gsettings-backend/xfconf-giomodule.c
@@ -31,14 +31,6 @@
G_MODULE_EXPORT XFCONF_EXPORT void g_io_module_load (GIOModule *module)
{
- GError *error = NULL;
-
- if (!xfconf_init (&error)) {
- g_critical ("Failed to get connection to xfconfd: %s", error->message);
- g_error_free (error);
- return;
- }
-
g_type_module_use(G_TYPE_MODULE(module));
g_io_extension_point_implement(G_SETTINGS_BACKEND_EXTENSION_POINT_NAME,
@@ -49,7 +41,6 @@ G_MODULE_EXPORT XFCONF_EXPORT void g_io_module_load (GIOModule *module)
G_MODULE_EXPORT XFCONF_EXPORT void g_io_module_unload (GIOModule *module)
{
- xfconf_shutdown();
}
/* Module query */
diff --git a/gsettings-backend/xfconf-gsettings-backend.c b/gsettings-backend/xfconf-gsettings-backend.c
index 53cae50..27a3757 100644
--- a/gsettings-backend/xfconf-gsettings-backend.c
+++ b/gsettings-backend/xfconf-gsettings-backend.c
@@ -297,6 +297,8 @@ xfconf_gsettings_backend_finalize (XfconfGsettingsBackend *self)
g_hash_table_destroy (self->subscribed_prop);
+ xfconf_shutdown();
+
G_OBJECT_CLASS(xfconf_gsettings_backend_parent_class)->finalize((GObject*)self);
}
@@ -304,6 +306,13 @@ static void
xfconf_gsettings_backend_init (XfconfGsettingsBackend *self)
{
const gchar *prg_name;
+ GError *error = NULL;
+
+ if (!xfconf_init (&error)) {
+ g_critical ("Failed to get connection to xfconfd: %s", error->message);
+ g_error_free (error);
+ return;
+ }
self->nhandled_tree_node = 0;