remove keymasks.h from atk-adaptor makefile
[platform/core/uifw/at-spi2-atk.git] / atk-adaptor / tree.c
index ec5428c..01b53a4 100644 (file)
@@ -43,6 +43,8 @@ append_update (DBusMessageIter * iter_array, AtkObject * obj,
   gint childcount;
   GSList *l;
 
+  g_assert(data != NULL);
+
   dbus_message_iter_open_container (iter_array, DBUS_TYPE_STRUCT, NULL,
                                    &iter_struct);
   path = spi_dbus_get_path (obj);
@@ -126,6 +128,8 @@ spi_dbus_append_tree (DBusMessage * message, AtkObject * obj,
   DBusMessageIter iter, iter_array;
   dbus_bool_t result;
 
+  g_assert(data != NULL);
+
   dbus_message_iter_init_append (message, &iter);
   dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "(ooaoassus)",
                                    &iter_array);
@@ -179,7 +183,7 @@ impl_introspect (DBusConnection *bus, DBusMessage *message, void *user_data)
   
   g_string_append_printf(output, spi_introspection_node_element, path);
 
-  spi_append_interface(output, "org.freedesktop.atspi.Tree");
+  spi_append_interface(output, SPI_DBUS_INTERFACE_TREE);
 
   g_string_append(output, spi_introspection_footer);
   final = g_string_free(output, FALSE);
@@ -200,8 +204,10 @@ message_handler (DBusConnection *bus, DBusMessage *message, void *user_data)
   const char *member = dbus_message_get_member (message);
 
   DBusMessage *reply = NULL;
+
+  g_return_val_if_fail(iface != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
   
-  if (!strcmp(iface, "org.freedesktop.atspi.Tree"))
+  if (!strcmp(iface, SPI_DBUS_INTERFACE_TREE))
     {
       if (!strcmp(member, "getRoot"))
        {
@@ -240,10 +246,11 @@ static DBusObjectPathVTable tree_vtable =
 
 void
 spi_register_tree_object(DBusConnection *bus,
+                        DRouteData *data,
                         const char *path)
 {
   dbus_bool_t mem = FALSE;
-  mem = dbus_connection_register_object_path(bus, path, &tree_vtable, NULL);
+  mem = dbus_connection_register_object_path(bus, path, &tree_vtable, data);
   g_assert(mem == TRUE);
 }
 
@@ -284,23 +291,29 @@ static void handle_cache_item(char *path, guint action, CacheIterData *d)
     break;
   }
   g_hash_table_remove(cache_list, path);
-  }
+}
 
-gboolean spi_dbus_update_cache(DRouteData *data)
+gboolean
+spi_dbus_update_cache(DRouteData *data)
 {
   DBusMessage *message;
   DBusMessageIter iter;
   CacheIterData d;
+  static gboolean in_update_cache = FALSE;
+
+  if (in_update_cache) return TRUE;
+  g_assert(data != NULL);
 
   if (update_pending == 0) return FALSE;
 //printf("Sending cache\n");
-  message = dbus_message_new_signal("/org/freedesktop/atspi/tree", "org.freedesktop.atspi.Tree", "UpdateTree");
+  message = dbus_message_new_signal ("/org/freedesktop/atspi/tree", SPI_DBUS_INTERFACE_TREE, "updateTree");
   if (!message) goto done;
   dbus_message_iter_init_append (message, &iter);
   dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "(ooaoassus)",
                                    &d.iter);
   d.droute = data;
   d.removing = FALSE;
+  in_update_cache = TRUE;
   do
   {
     /* This loop is needed because appending an item may cause new children
@@ -313,6 +326,7 @@ gboolean spi_dbus_update_cache(DRouteData *data)
   dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "o", &d.iter);
   d.removing = TRUE;
   g_hash_table_foreach(cache_list, (GHFunc)handle_cache_item, &d);
+  in_update_cache = FALSE;
   dbus_message_iter_close_container(&iter, &d.iter);
   dbus_connection_send(data->bus, message, NULL);
 done: