summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/dconf-engine.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index c3e5707..33ffd57 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -1181,6 +1181,25 @@ dconf_engine_change_sync (DConfEngine *engine,
return TRUE;
}
+static gboolean
+dconf_engine_is_interested_in_signal (DConfEngine *engine,
+ GBusType bus_type,
+ const gchar *sender,
+ const gchar *path)
+{
+ gint i;
+
+ for (i = 0; i < engine->n_sources; i++)
+ {
+ DConfEngineSource *source = engine->sources[i];
+
+ if (source->bus_type == bus_type && g_str_equal (source->object_path, path))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
void
dconf_engine_handle_dbus_signal (GBusType type,
const gchar *sender,
@@ -1215,7 +1234,8 @@ dconf_engine_handle_dbus_signal (GBusType type,
* Check last_handled to determine if we should ignore it.
*/
if (!engine->last_handled || !g_str_equal (engine->last_handled, tag))
- dconf_engine_change_notify (engine, prefix, changes, tag, FALSE, NULL, engine->user_data);
+ if (dconf_engine_is_interested_in_signal (engine, type, sender, path))
+ dconf_engine_change_notify (engine, prefix, changes, tag, FALSE, NULL, engine->user_data);
engines = g_slist_delete_link (engines, engines);
@@ -1244,7 +1264,8 @@ dconf_engine_handle_dbus_signal (GBusType type,
{
DConfEngine *engine = engines->data;
- dconf_engine_change_notify (engine, path, empty_str_list, "", TRUE, NULL, engine->user_data);
+ if (dconf_engine_is_interested_in_signal (engine, type, sender, path))
+ dconf_engine_change_notify (engine, path, empty_str_list, "", TRUE, NULL, engine->user_data);
engines = g_slist_delete_link (engines, engines);