summaryrefslogtreecommitdiff
path: root/service/dconf-writer.c
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2012-07-01 13:31:49 -0400
committerRyan Lortie <desrt@desrt.ca>2012-07-01 13:38:50 -0400
commitb132b06ef9a106332dbe5002ca42873ef1de8748 (patch)
tree69ebdc4a856cfcac58bab27a0cc3a13220caf939 /service/dconf-writer.c
parentc2f09990517c6569cf356c369754184491123074 (diff)
downloaddconf-b132b06ef9a106332dbe5002ca42873ef1de8748.tar.gz
service: introduce a new Changeset-based method
Add a "Change" method to the service for writing DConfChangesets.
Diffstat (limited to 'service/dconf-writer.c')
-rw-r--r--service/dconf-writer.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/service/dconf-writer.c b/service/dconf-writer.c
index 3f2aeee..4218977 100644
--- a/service/dconf-writer.c
+++ b/service/dconf-writer.c
@@ -128,6 +128,29 @@ dconf_writer_write_many (DConfWriter *writer,
return TRUE;
}
+gboolean
+dconf_writer_change (DConfWriter *writer,
+ DConfChangeset *change,
+ GError **error)
+{
+ const gchar * const *keys;
+ GVariant * const *values;
+ const gchar *prefix;
+ gint n_items;
+
+ n_items = dconf_changeset_describe (change, &prefix, &keys, &values);
+
+ if (!n_items)
+ return TRUE;
+
+ if (!dconf_rebuilder_rebuild (writer->path, prefix, keys, values, n_items, error))
+ return FALSE;
+
+ dconf_writer_touch_shm (writer);
+
+ return TRUE;
+}
+
const gchar *
dconf_writer_get_name (DConfWriter *writer)
{