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 (®istry->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",