#include <atk/atk.h>
#include <droute/droute.h>
-#include "common/spi-dbus.h"
-#include "common/spi-stateset.h"
+#include "spi-dbus.h"
+#include "accessible-stateset.h"
#include "accessible-cache.h"
#include "bridge.h"
#include "object.h"
const char *name, *desc;
dbus_uint32_t role;
- g_object_ref (G_OBJECT (obj));
-
set = atk_object_ref_state_set (obj);
{
AtkObject *application, *parent;
spi_object_append_null_reference (&iter_struct);
}
}
- else if (role != Accessibility_ROLE_APPLICATION)
+ else if (role != ATSPI_ROLE_APPLICATION)
spi_object_append_null_reference (&iter_struct);
else
spi_object_append_desktop_reference (&iter_struct);
for (i = 0; i < childcount; i++)
{
AtkObject *child;
- gchar *child_path;
child = atk_object_ref_accessible_child (obj, i);
spi_object_append_reference (&iter_sub_array, child);
}
dbus_message_iter_close_container (iter_array, &iter_struct);
g_object_unref (set);
- g_object_unref (obj);
}
/*---------------------------------------------------------------------------*/
+static void
+ref_accessible_hf (gpointer key, gpointer obj_data, gpointer data)
+{
+ g_object_ref (key);
+}
+
/* For use as a GHFunc */
static void
append_accessible_hf (gpointer key, gpointer obj_data, gpointer data)
append_cache_item (ATK_OBJECT (key), data);
}
+static void
+add_to_list_hf (gpointer key, gpointer obj_data, gpointer data)
+{
+ GSList **listptr = data;
+ *listptr = g_slist_prepend (*listptr, key);
+}
+
/*---------------------------------------------------------------------------*/
static void
DBusMessage *message;
if ((message = dbus_message_new_signal (SPI_CACHE_OBJECT_PATH,
- SPI_DBUS_INTERFACE_CACHE,
+ ATSPI_DBUS_INTERFACE_CACHE,
"RemoveAccessible")))
{
DBusMessageIter iter;
- gchar *path;
dbus_message_iter_init_append (message, &iter);
DBusMessage *message;
if ((message = dbus_message_new_signal (SPI_CACHE_OBJECT_PATH,
- SPI_DBUS_INTERFACE_CACHE,
+ ATSPI_DBUS_INTERFACE_CACHE,
"AddAccessible")))
{
DBusMessageIter iter;
dbus_message_iter_init_append (message, &iter);
+ g_object_ref (accessible);
append_cache_item (accessible, &iter);
+ g_object_unref (accessible);
dbus_connection_send (spi_global_app_data->bus, message, NULL);
{
DBusMessage *reply;
DBusMessageIter iter, iter_array;
+ GSList *pending_unrefs = NULL;
if (bus == spi_global_app_data->bus)
spi_atk_add_client (dbus_message_get_sender (message));
dbus_message_iter_init_append (reply, &iter);
dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY,
SPI_CACHE_ITEM_SIGNATURE, &iter_array);
+ spi_cache_foreach (spi_global_cache, ref_accessible_hf, NULL);
spi_cache_foreach (spi_global_cache, append_accessible_hf, &iter_array);
+ spi_cache_foreach (spi_global_cache, add_to_list_hf, &pending_unrefs);
+ g_slist_free_full (pending_unrefs, g_object_unref);
dbus_message_iter_close_container (&iter, &iter_array);
return reply;
}
void
spi_initialize_cache (DRoutePath * path)
{
- droute_path_add_interface (path, SPI_DBUS_INTERFACE_CACHE, spi_org_a11y_atspi_Cache, methods, NULL);
+ droute_path_add_interface (path, ATSPI_DBUS_INTERFACE_CACHE, spi_org_a11y_atspi_Cache, methods, NULL);
- g_signal_connect (spi_global_cache,
- "object-added",
- (GCallback) emit_cache_add,
- NULL);
+ g_signal_connect (spi_global_cache, "object-added",
+ (GCallback) emit_cache_add, NULL);
- g_signal_connect (spi_global_cache,
- "object-removed",
- (GCallback) emit_cache_remove,
- NULL);
+ g_signal_connect (spi_global_cache, "object-removed",
+ (GCallback) emit_cache_remove, NULL);
};
/*END------------------------------------------------------------------------*/