[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [xsettings-kde] /: Stop using deprecated GSettings API
From:       Olav Vitters <olav () vitters ! nl>
Date:       2016-01-26 23:36:16
Message-ID: E1aOD9k-00022K-Ey () scm ! kde ! org
[Download RAW message or body]

Git commit 5d6a1a0b937e336ad81ba147ec3f026b8da7dc48 by Olav Vitters.
Committed on 26/01/2016 at 23:28.
Pushed by vitters into branch 'master'.

Stop using deprecated GSettings API

Based off commit 4ef177bc80ba530c97a9cccebc9fb665a3f5d139 in
gnome-settings-daemon.

M  +28   -10   xsettings-kde.c

http://commits.kde.org/xsettings-kde/5d6a1a0b937e336ad81ba147ec3f026b8da7dc48

diff --git a/xsettings-kde.c b/xsettings-kde.c
index 9282b60..df37d4f 100644
--- a/xsettings-kde.c
+++ b/xsettings-kde.c
@@ -195,20 +195,38 @@ int readDPI(char *buffer)
 }
 
 static gboolean
-check_gsettings_schema (const gchar *schema)
+contained (char       **items,
+           const char  *item)
 {
-  const gchar * const *schemas = g_settings_list_schemas ();
-  gint i;
+	while (*items) {
+		if (g_strcmp0 (*items++, item) == 0) {
+			return TRUE;
+		}
+	}
 
-    for (i = 0; schemas[i] != NULL; i++) {
-      if (g_strcmp0 (schemas[i], schema) == 0)
-            return TRUE;
-  }
-  g_warning ("Settings schema '%s' is not installed.", schema);
+	return FALSE;
+}
+
+static gboolean
+schema_is_installed (const char *schema)
+{
+	GSettingsSchemaSource *source = NULL;
+	gchar **non_relocatable = NULL;
+	gchar **relocatable = NULL;
+
+	source = g_settings_schema_source_get_default ();
+	if (!source) {
+		g_warning ("Settings schema '%s' is not installed.", schema);
+		return FALSE;
+	}
 
-    return FALSE;
+	g_settings_schema_source_list_schemas (source, TRUE, &non_relocatable, &relocatable);
+
+	return (contained (non_relocatable, schema) ||
+		contained (relocatable, schema));
 }
 
+
 static void
 gsettings_changed (GSettings  *settings,
          const char *key,
@@ -509,7 +527,7 @@ void initial_init () {
   GSettings *settings = NULL;
   gchar *vgtkimm = NULL;
 
-    if (check_gsettings_schema (IMMODULE_SCHEMA)) {
+    if (schema_is_installed (IMMODULE_SCHEMA)) {
       settings = g_settings_new (IMMODULE_SCHEMA);
       g_signal_connect (settings, "changed",
                 G_CALLBACK (gsettings_changed), NULL);

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic