summaryrefslogtreecommitdiff
path: root/mate-session/gsm-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-session/gsm-manager.c')
-rw-r--r--mate-session/gsm-manager.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c
index 0ca852f..37ca39d 100644
--- a/mate-session/gsm-manager.c
+++ b/mate-session/gsm-manager.c
@@ -2838,7 +2838,9 @@ on_presence_status_changed (GsmPresence *presence,
static void
gsm_manager_init (GsmManager *manager)
{
- GSettingsSchema *schema;
+ gchar **schemas = NULL;
+ gboolean schema_exists;
+ guint i;
GsmManagerPrivate *priv;
priv = gsm_manager_get_instance_private (manager);
@@ -2847,15 +2849,21 @@ gsm_manager_init (GsmManager *manager)
priv->settings_lockdown = g_settings_new (LOCKDOWN_SCHEMA);
/* check if mate-screensaver is installed */
- schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (),
- SCREENSAVER_SCHEMA, FALSE);
+ g_settings_schema_source_list_schemas (g_settings_schema_source_get_default (), TRUE, &schemas, NULL);
+ schema_exists = FALSE;
+ for (i = 0; schemas[i] != NULL; i++) {
+ if (g_str_equal (schemas[i], SCREENSAVER_SCHEMA)) {
+ schema_exists = TRUE;
+ break;
+ }
+ }
- if (schema != NULL) {
- priv->settings_screensaver = g_settings_new_full (schema, NULL, NULL);
- g_settings_schema_unref (schema);
- } else {
+ g_strfreev (schemas);
+
+ if (schema_exists == TRUE)
+ priv->settings_screensaver = g_settings_new (SCREENSAVER_SCHEMA);
+ else
priv->settings_screensaver = NULL;
- }
priv->inhibitors = gsm_store_new ();
g_signal_connect (priv->inhibitors,