[tracker] tracker: Avoid deprecated GSettings API



commit 478d8c1d94c336197e18edc4ff8fadf674a8a438
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Nov 19 23:46:00 2016 +0100

    tracker: Avoid deprecated GSettings API
    
    And use GSettingsSchema/GSettingsSchemaSource. This code is still
    disgusting.

 src/tracker/tracker-config.c |   21 +++++++++++++++------
 src/tracker/tracker-config.h |    1 +
 src/tracker/tracker-reset.c  |    2 +-
 src/tracker/tracker-status.c |    2 +-
 4 files changed, 18 insertions(+), 8 deletions(-)
---
diff --git a/src/tracker/tracker-config.c b/src/tracker/tracker-config.c
index 737b7c0..9dfc143 100644
--- a/src/tracker/tracker-config.c
+++ b/src/tracker/tracker-config.c
@@ -37,14 +37,15 @@ tracker_gsettings_get_all (gint *longest_name_length)
        } SchemaWithPath;
 
        TrackerMinerManager *manager;
+       GSettingsSchemaSource *source;
        GError *error = NULL;
        GSettings *settings;
        GSList *all = NULL;
        GSList *l;
        GSList *miners_available;
        GSList *valid_schemas = NULL;
-       const gchar * const *schema;
-       gint len = 0;
+       gchar **schemas;
+       gint i, len = 0;
        SchemaWithPath components[] = {
                { "Store", "store" },
                { "Extract", "extract" },
@@ -65,23 +66,28 @@ tracker_gsettings_get_all (gint *longest_name_length)
 
        miners_available = tracker_miner_manager_get_available (manager);
 
-       /* Get valid schemas so we don't try to load invalid ones */
-       for (schema = g_settings_list_schemas (); schema && *schema; schema++) {
-               if (!g_str_has_prefix (*schema, "org.freedesktop.Tracker.")) {
+       source = g_settings_schema_source_get_default ();
+       g_settings_schema_source_list_schemas (source, TRUE, &schemas, NULL);
+
+       for (i = 0; schemas[i]; i++) {
+               if (!g_str_has_prefix (schemas[i], "org.freedesktop.Tracker.")) {
                        continue;
                }
 
-               valid_schemas = g_slist_prepend (valid_schemas, g_strdup (*schema));
+               valid_schemas = g_slist_prepend (valid_schemas, g_strdup (schemas[i]));
        }
 
        /* Store / General */
        for (swp = components; swp && swp->schema; swp++) {
+               GSettingsSchema *settings_schema;
                gchar *schema;
                gchar *path;
 
                schema = g_strdup_printf ("org.freedesktop.Tracker.%s", swp->schema);
                path = g_strdup_printf ("/org/freedesktop/tracker/%s/", swp->path);
 
+               settings_schema = g_settings_schema_source_lookup (source, schema, FALSE);
+
                /* If miner doesn't have a schema, no point in getting config */
                if (!tracker_string_in_gslist (schema, valid_schemas)) {
                        g_free (path);
@@ -97,6 +103,7 @@ tracker_gsettings_get_all (gint *longest_name_length)
 
                        c->name = g_strdup (swp->schema);
                        c->settings = settings;
+                       c->schema = settings_schema;
                        c->is_miner = FALSE;
 
                        all = g_slist_prepend (all, c);
@@ -156,6 +163,7 @@ tracker_gsettings_get_all (gint *longest_name_length)
        g_slist_foreach (miners_available, (GFunc) g_free, NULL);
        g_slist_free (miners_available);
        g_object_unref (manager);
+       g_strfreev (schemas);
 
        if (longest_name_length) {
                *longest_name_length = len;
@@ -198,6 +206,7 @@ tracker_gsettings_free (GSList *all)
 
                g_free (c->name);
                g_object_unref (c->settings);
+               g_object_unref (c->schema);
                g_slice_free (ComponentGSettings, c);
        }
 }
diff --git a/src/tracker/tracker-config.h b/src/tracker/tracker-config.h
index 748e6b9..66cf4b8 100644
--- a/src/tracker/tracker-config.h
+++ b/src/tracker/tracker-config.h
@@ -26,6 +26,7 @@
 
 typedef struct {
        gchar *name;
+       GSettingsSchema *schema;
        GSettings *settings;
        gboolean is_miner;
 } ComponentGSettings;
diff --git a/src/tracker/tracker-reset.c b/src/tracker/tracker-reset.c
index 8278b60..38116c8 100644
--- a/src/tracker/tracker-reset.c
+++ b/src/tracker/tracker-reset.c
@@ -372,7 +372,7 @@ reset_run (void)
 
                        g_print ("  %s\n", c->name);
 
-                       keys = g_settings_list_keys (c->settings);
+                       keys = g_settings_schema_list_keys (c->schema);
                        for (p = keys; p && *p; p++) {
                                g_print ("    %s\n", *p);
                                g_settings_reset (c->settings, *p);
diff --git a/src/tracker/tracker-status.c b/src/tracker/tracker-status.c
index 12b76d2..8364dd2 100644
--- a/src/tracker/tracker-status.c
+++ b/src/tracker/tracker-status.c
@@ -352,7 +352,7 @@ collect_debug (void)
                                continue;
                        }
 
-                       keys = g_settings_list_keys (c->settings);
+                       keys = g_settings_schema_list_keys (c->schema);
                        for (p = keys; p && *p; p++) {
                                GVariant *v;
                                gchar *printed;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]