X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgdelayedsettingsbackend.c;h=22a42ebdaeed409c28f7e9e4e7f1835a69ca42a3;hb=25990eb2b6da94e1d03631eab8a952ef84cb9986;hp=6c1866b5bd0a35c65e3b8810202369881339579e;hpb=54cc43630ddf724722ebdfc1d6906dc1986b773d;p=platform%2Fupstream%2Fglib.git
diff --git a/gio/gdelayedsettingsbackend.c b/gio/gdelayedsettingsbackend.c
index 6c1866b..22a42eb 100644
--- a/gio/gdelayedsettingsbackend.c
+++ b/gio/gdelayedsettingsbackend.c
@@ -12,9 +12,7 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see .
*
* Author: Ryan Lortie
*/
@@ -104,6 +102,32 @@ g_delayed_settings_backend_read (GSettingsBackend *backend,
return result;
}
+static GVariant *
+g_delayed_settings_backend_read_user_value (GSettingsBackend *backend,
+ const gchar *key,
+ const GVariantType *expected_type)
+{
+ GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
+ gboolean value_found = FALSE;
+ gpointer result = NULL;
+
+ /* If we find an explicit NULL in our changeset then we want to return
+ * NULL (because the user value has been reset).
+ *
+ * Otherwise, chain up.
+ */
+ g_mutex_lock (&delayed->priv->lock);
+ value_found = g_tree_lookup_extended (delayed->priv->delayed, key, NULL, &result);
+ if (result)
+ g_variant_ref (result);
+ g_mutex_unlock (&delayed->priv->lock);
+
+ if (value_found)
+ return result;
+
+ return g_settings_backend_read_user_value (delayed->priv->backend, key, expected_type);
+}
+
static gboolean
g_delayed_settings_backend_write (GSettingsBackend *backend,
const gchar *key,
@@ -282,8 +306,8 @@ static void
delayed_backend_keys_changed (GObject *target,
GSettingsBackend *backend,
const gchar *path,
- const gchar * const *items,
- gpointer origin_tag)
+ gpointer origin_tag,
+ const gchar * const *items)
{
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (target);
@@ -429,6 +453,7 @@ g_delayed_settings_backend_class_init (GDelayedSettingsBackendClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
backend_class->read = g_delayed_settings_backend_read;
+ backend_class->read_user_value = g_delayed_settings_backend_read_user_value;
backend_class->write = g_delayed_settings_backend_write;
backend_class->write_tree = g_delayed_settings_backend_write_tree;
backend_class->reset = g_delayed_settings_backend_reset;