diff options
Diffstat (limited to 'service/dconf-writer.c')
-rw-r--r-- | service/dconf-writer.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/service/dconf-writer.c b/service/dconf-writer.c index 26f66dd..8b59019 100644 --- a/service/dconf-writer.c +++ b/service/dconf-writer.c @@ -130,21 +130,25 @@ dconf_writer_real_change (DConfWriter *writer, const gchar *tag) { g_return_if_fail (writer->priv->uncommited_values != NULL); + DConfChangeset *effective_changeset = dconf_changeset_filter_changes (writer->priv->uncommited_values, + changeset); - dconf_changeset_change (writer->priv->uncommited_values, changeset); - - if (tag) + if (effective_changeset) { - TaggedChange *change; + dconf_changeset_change (writer->priv->uncommited_values, effective_changeset); + if (tag) + { + TaggedChange *change; - change = g_slice_new (TaggedChange); - change->changeset = dconf_changeset_ref (changeset); - change->tag = g_strdup (tag); + change = g_slice_new (TaggedChange); + change->changeset = dconf_changeset_ref (effective_changeset); + change->tag = g_strdup (tag); - g_queue_push_tail (&writer->priv->uncommited_changes, change); - } + g_queue_push_tail (&writer->priv->uncommited_changes, change); + } - writer->priv->need_write = TRUE; + writer->priv->need_write = TRUE; + } } static gboolean |