diff options
Diffstat (limited to 'atspi/atspi-event-listener.c')
-rw-r--r-- | atspi/atspi-event-listener.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c index 9b95c3dd..5fb84026 100644 --- a/atspi/atspi-event-listener.c +++ b/atspi/atspi-event-listener.c @@ -882,6 +882,7 @@ atspi_event_copy (AtspiEvent *src) dst->detail2 = src->detail2; g_value_init (&dst->any_data, G_VALUE_TYPE (&src->any_data)); g_value_copy (&src->any_data, &dst->any_data); + dst->sender = g_object_ref (src->sender); return dst; } @@ -892,6 +893,7 @@ atspi_event_free (AtspiEvent *event) g_free (event->type); g_value_unset (&event->any_data); g_free (event); + g_object_unref (event->sender); } static gboolean @@ -961,6 +963,7 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data) { char *detail = NULL; const char *category = dbus_message_get_interface (message); + const char *sender = dbus_message_get_sender (message); const char *member = dbus_message_get_member (message); const char *signature = dbus_message_get_signature (message); gchar *name; @@ -1026,7 +1029,7 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data) e.type = converted_type; if (strcmp (category, "ScreenReader") != 0) { - e.source = _atspi_ref_accessible (dbus_message_get_sender(message), dbus_message_get_path(message)); + e.source = _atspi_ref_accessible (sender, dbus_message_get_path (message)); if (e.source == NULL) { g_warning ("Got no valid source accessible for signal %s from interface %s\n", member, category); @@ -1084,6 +1087,8 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data) cache = _atspi_dbus_update_cache_from_dict (e.source, &iter); } + e.sender = _atspi_ref_accessible (sender, ATSPI_DBUS_PATH_ROOT); + if (!strncmp (e.type, "object:children-changed", 23)) { cache_process_children_changed (&e); |