From 67b25d0f9eea338fb2eaa4e34a83e2b720e54e0e Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Mon, 9 Jul 2012 17:41:38 -0500 Subject: [PATCH 1/1] Only send property-change signals relevant for caching, absent listeners Previously, all property-change signals were passed on, regardless of any registered listeners, because some of them are used by libatspi to keep the cache up-to-date. However, gtk sends many notifications for property changes that would have no impact on libatspi's caching code, so we should not waste time building and sending D-Bus messages for them unless something is interested in the event. https://bugzilla.gnome.org/show_bug.cgi?id=674719 --- atk-adaptor/event.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c index 859d399..efd9c20 100644 --- a/atk-adaptor/event.c +++ b/atk-adaptor/event.c @@ -371,7 +371,11 @@ signal_is_needed (const gchar *klass, const gchar *major, const gchar *minor) * TODO: FOr 2.2, have at-spi2-core define a special "cache listener" for * this instead, so that we don't send these if no one is listening */ if (!g_strcmp0 (data [1], "ChildrenChanged") || - !g_strcmp0 (data [1], "PropertyChange") || + ((!g_strcmp0 (data [1], "PropertyChange")) && + (!g_strcmp0 (data [2], "accessible-name") || + !g_strcmp0 (data [2], "accessible-description") || + !g_strcmp0 (data [2], "accessible-parent") || + !g_strcmp0 (data [2], "accessible-role"))) || !g_strcmp0 (data [1], "StateChanged")) { g_free (data [2]); -- 2.7.4