summaryrefslogtreecommitdiff
path: root/gsettings
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-05-06 12:10:23 +0200
committerRyan Lortie <desrt@desrt.ca>2011-05-06 12:10:23 +0200
commita2c4601f2650e83bff2fec3f1a13dc46cdf3a070 (patch)
tree8e7afddf533c0b3a8ac59113ffd909689fd84b7f /gsettings
parente7dcf8d6e9e5c184b1302d0c731f632ab8466f1d (diff)
downloaddconf-a2c4601f2650e83bff2fec3f1a13dc46cdf3a070.tar.gz
client-side lockdown support
Support lockdown on the client side for GSettings. For performance reasons only lockdown of specific keys (not entire subpaths) is supported at the moment. This may change in the future if we can find a way to make large numbers of related GVDB lookups sufficiently performant.
Diffstat (limited to 'gsettings')
-rw-r--r--gsettings/dconfsettingsbackend.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c
index d978646..77d9358 100644
--- a/gsettings/dconfsettingsbackend.c
+++ b/gsettings/dconfsettingsbackend.c
@@ -101,6 +101,24 @@ dconf_settings_backend_signal (GDBusConnection *connection,
g_free (rels);
}
+
+ if (dconf_engine_decode_writability_notify (&path, interface_name,
+ signal_name, parameters))
+ {
+ GSettingsBackend *backend = G_SETTINGS_BACKEND (dcsb);
+
+ if (g_str_has_suffix (path, "/"))
+ {
+ g_settings_backend_path_writable_changed (backend, path);
+ g_settings_backend_path_changed (backend, path, NULL);
+ }
+
+ else
+ {
+ g_settings_backend_writable_changed (backend, path);
+ g_settings_backend_changed (backend, path, NULL);
+ }
+ }
}
static void