summaryrefslogtreecommitdiff
path: root/xfconf
diff options
context:
space:
mode:
authorNick Schermer <nick@xfce.org>2012-04-22 21:29:38 +0200
committerNick Schermer <nick@xfce.org>2012-04-22 21:29:38 +0200
commit5ce79440801208e55bd6d1856c3099cc7e3cfcd3 (patch)
tree9a8b9e2e176a7adeeb59ae4a389b1da4ef25ad22 /xfconf
parentc30eab4ed3a74fd055a4cefc348ea1818ed975d2 (diff)
downloadxfconf-5ce79440801208e55bd6d1856c3099cc7e3cfcd3.tar.gz
Don't emit property-changed on cancelled calls.
Diffstat (limited to 'xfconf')
-rw-r--r--xfconf/xfconf-cache.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/xfconf/xfconf-cache.c b/xfconf/xfconf-cache.c
index bb6d889..36bd03e 100644
--- a/xfconf/xfconf-cache.c
+++ b/xfconf/xfconf-cache.c
@@ -454,6 +454,13 @@ xfconf_cache_property_changed(DBusGProxy *proxy,
if(strcmp(channel_name, cache->channel_name))
return;
+ /* if a call was cancelled, we still receive a property-changed from
+ * that value, in that case, abort the emission of the signal. we can
+ * detect this because the new reply is not processed yet and thus
+ * there is still an old_prop in the hash table */
+ if(g_hash_table_lookup(cache->old_properties, property))
+ return;
+
item = g_tree_lookup(cache->properties, property);
if(item)
changed = xfconf_cache_item_update(item, value);