about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch
blob: 8b64b3df8015d437d19a658c18f2693f48d2b6e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c
index 9c166dbaf..ef368f8d4 100644
--- a/src/libedataserver/e-source-registry.c
+++ b/src/libedataserver/e-source-registry.c
@@ -116,6 +116,8 @@ struct _ESourceRegistryPrivate {
 	GHashTable *sources;
 	GMutex sources_lock;
 
+	GSettingsSchemaSource *schema_source;
+	GSettingsSchema *schema;
 	GSettings *settings;
 
 	gboolean initialized;
@@ -1339,7 +1341,11 @@ source_registry_dispose (GObject *object)
 	if (priv->settings != NULL) {
 		g_signal_handlers_disconnect_by_data (priv->settings, object);
 		g_object_unref (priv->settings);
+		g_settings_schema_unref (priv->schema);
+		g_settings_schema_source_unref (priv->schema_source);
 		priv->settings = NULL;
+		priv->schema = NULL;
+		priv->schema_source = NULL;
 	}
 
 	/* Chain up to parent's finalize() method. */
@@ -1743,7 +1749,9 @@ e_source_registry_init (ESourceRegistry *registry)
 
 	g_mutex_init (&registry->priv->sources_lock);
 
-	registry->priv->settings = g_settings_new (GSETTINGS_SCHEMA);
+	GSettingsSchemaSource *schema_source = registry->priv->schema_source = g_settings_schema_source_new_from_directory ("@ESD_GSETTINGS_PATH@",  g_settings_schema_source_get_default (), TRUE, NULL);
+	registry->priv->schema = g_settings_schema_source_lookup (schema_source, GSETTINGS_SCHEMA, FALSE);
+	registry->priv->settings = g_settings_new_full (registry->priv->schema, NULL, NULL);
 
 	g_signal_connect (
 		registry->priv->settings, "changed",