summaryrefslogtreecommitdiff
path: root/gsettings
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2010-05-18 16:17:31 -0400
committerRyan Lortie <desrt@desrt.ca>2010-05-18 16:21:48 -0400
commit3ff27b0f836468e5c160a6b47a963d51416f45ad (patch)
tree61a5f76b511fd172cf90843eca135c72f19e1f4e /gsettings
parent29ecbdf6aaae6b06a5dd6bfdb86b9165be8fb046 (diff)
downloaddconf-3ff27b0f836468e5c160a6b47a963d51416f45ad.tar.gz
GDBus porting fixups
- fix signal emission - adapt the backend code to deal with the fact that we are using GVariant* containing 'variant' now.
Diffstat (limited to 'gsettings')
-rw-r--r--gsettings/dconfdatabase.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gsettings/dconfdatabase.c b/gsettings/dconfdatabase.c
index fcd2ba6..44ce35a 100644
--- a/gsettings/dconfdatabase.c
+++ b/gsettings/dconfdatabase.c
@@ -266,6 +266,7 @@ dconf_database_incoming_signal (DConfDatabase *database,
{
const gchar **keys;
const gchar *name;
+ gboolean is_path;
guint64 serial;
if (strcmp (g_dbus_message_get_interface (message),
@@ -276,6 +277,8 @@ dconf_database_incoming_signal (DConfDatabase *database,
g_variant_get (g_dbus_message_get_body (message),
"(t&s^a&s)", &serial, &name, &keys);
+ is_path = g_str_has_suffix (name, "/");
+
if (serial != database->anti_expose)
{
GSList *node;
@@ -283,9 +286,12 @@ dconf_database_incoming_signal (DConfDatabase *database,
if (keys[0] == NULL)
{
for (node = database->backends; node; node = node->next)
- g_settings_backend_changed (node->data, name, NULL);
+ if (is_path)
+ g_settings_backend_path_changed (node->data, name, NULL);
+ else
+ g_settings_backend_changed (node->data, name, NULL);
}
- else
+ else if (is_path)
{
for (node = database->backends; node; node = node->next)
g_settings_backend_keys_changed (node->data, name, keys, NULL);