Change sets

GConf has a a concept of a set of changes which can be applied or reverted at once: GConfChangeSet (GConf doesn't actually apply changes atomically, which is one of its shortcomings).

Instead of a separate object to represent a change set, GSettings has a 'delayed-apply' mode, which can be turned on for a GSettings object by calling g_settings_delay(). In this mode, changes done to the GSettings object are not applied - they are still visible when calling g_settings_get() on the same object, but not to other GSettings instances or even other processes.

To apply the pending changes all at once (GSettings does atomicity here), call g_settings_apply(). To revert the pending changes, call g_settings_revert() or just drop the reference to the GSettings object.