X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Fadaptors%2Fcache-adaptor.c;h=edbcb7b18bb831daf04909caf53b011c12f97e92;hb=344deddcec79cb4611010a7c8655755f5d05350e;hp=265b0bc437f5fcc1cd42aa64e26e377588322737;hpb=ee85cda153116dd6d73fceeb7940c23ff5d19110;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/adaptors/cache-adaptor.c b/atk-adaptor/adaptors/cache-adaptor.c index 265b0bc..edbcb7b 100644 --- a/atk-adaptor/adaptors/cache-adaptor.c +++ b/atk-adaptor/adaptors/cache-adaptor.c @@ -32,9 +32,10 @@ #include "accessible-cache.h" #include "bridge.h" #include "object.h" +#include "introspection.h" /* TODO - This should possibly be a common define */ -#define SPI_OBJECT_PREFIX "/org/at_spi" +#define SPI_OBJECT_PREFIX "/org/a11y/atspi" #define SPI_CACHE_OBJECT_SUFFIX "/cache" #define SPI_CACHE_OBJECT_PATH SPI_OBJECT_PREFIX SPI_CACHE_OBJECT_SUFFIX @@ -78,6 +79,8 @@ append_cache_item (AtkObject * obj, gpointer data) const char *name, *desc; dbus_uint32_t role; + g_object_ref (G_OBJECT (obj)); + set = atk_object_ref_state_set (obj); { AtkObject *application, *parent; @@ -98,7 +101,6 @@ append_cache_item (AtkObject * obj, gpointer data) parent = atk_object_get_parent (obj); if (parent == NULL) { -#ifdef SPI_ATK_PLUG_SOCKET /* TODO, move in to a 'Plug' wrapper. */ if (ATK_IS_PLUG (obj)) { @@ -109,22 +111,27 @@ append_cache_item (AtkObject * obj, gpointer data) if (id) { bus_parent = g_strdup (id); - if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':'))) - { - DBusMessageIter iter_parent; - *(path_parent++) = '\0'; - dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL, - &iter_parent); - dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent); - dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent); - dbus_message_iter_close_container (&iter_struct, &iter_parent); - } + if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':'))) + { + DBusMessageIter iter_parent; + *(path_parent++) = '\0'; + dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL, + &iter_parent); + dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent); + dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent); + dbus_message_iter_close_container (&iter_struct, &iter_parent); + } + else + { + spi_object_append_null_reference (&iter_struct); + } + } + else + { + spi_object_append_null_reference (&iter_struct); } } else if (role != Accessibility_ROLE_APPLICATION) -#else - if (role != Accessibility_ROLE_APPLICATION) -#endif spi_object_append_null_reference (&iter_struct); else spi_object_append_desktop_reference (&iter_struct); @@ -152,7 +159,6 @@ append_cache_item (AtkObject * obj, gpointer data) g_object_unref (G_OBJECT (child)); } } -#ifdef SPI_ATK_PLUG_SOCKET if (ATK_IS_SOCKET (obj) && atk_socket_is_occupied (ATK_SOCKET (obj))) { AtkSocket *socket = ATK_SOCKET (obj); @@ -171,7 +177,6 @@ append_cache_item (AtkObject * obj, gpointer data) } g_free (child_name); } -#endif dbus_message_iter_close_container (&iter_struct, &iter_sub_array); @@ -209,6 +214,7 @@ append_cache_item (AtkObject * obj, gpointer data) } dbus_message_iter_close_container (iter_array, &iter_struct); g_object_unref (set); + g_object_unref (obj); } /*---------------------------------------------------------------------------*/ @@ -218,8 +224,8 @@ static void append_accessible_hf (gpointer key, gpointer obj_data, gpointer data) { /* Make sure it isn't a hyperlink */ - if (ATK_IS_OBJECT (obj_data)) - append_cache_item (ATK_OBJECT (obj_data), data); + if (ATK_IS_OBJECT (key)) + append_cache_item (ATK_OBJECT (key), data); } /*---------------------------------------------------------------------------*/ @@ -273,8 +279,7 @@ emit_cache_add (SpiCache *cache, GObject * obj) static DBusMessage * impl_GetRoot (DBusConnection * bus, DBusMessage * message, void *user_data) { - return spi_object_return_reference (message, - g_object_ref (G_OBJECT (spi_global_app_data->root))); + return spi_object_return_reference (message, spi_global_app_data->root); } /*---------------------------------------------------------------------------*/ @@ -306,7 +311,7 @@ static DRouteMethod methods[] = { void spi_initialize_cache (DRoutePath * path) { - droute_path_add_interface (path, SPI_DBUS_INTERFACE_CACHE, methods, NULL); + droute_path_add_interface (path, SPI_DBUS_INTERFACE_CACHE, spi_org_a11y_atspi_Cache, methods, NULL); g_signal_connect (spi_global_cache, "object-added",