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.