+
+ accpath = droute_add_many (spi_global_app_data->droute,
+ "/org/a11y/atspi/accessible",
+ NULL,
+ introspect_children_cb,
+ NULL,
+ (DRouteGetDatumFunction)
+ spi_global_register_path_to_object);
+
+
+ /* Register all interfaces with droute and set up application accessible db */
+ spi_initialize_cache (treepath);
+ spi_initialize_accessible (accpath);
+ spi_initialize_application (accpath);
+ spi_initialize_action (accpath);
+ spi_initialize_collection (accpath);
+ spi_initialize_component (accpath);
+ spi_initialize_document (accpath);
+ spi_initialize_editabletext (accpath);
+ spi_initialize_hyperlink (accpath);
+ spi_initialize_hypertext (accpath);
+ spi_initialize_image (accpath);
+ spi_initialize_selection (accpath);
+ spi_initialize_socket (accpath);
+ spi_initialize_table (accpath);
+ spi_initialize_text (accpath);
+ spi_initialize_value (accpath);
+
+ /* Register methods to send D-Bus signals on certain ATK events */
+ spi_atk_register_event_listeners ();
+
+ /* Set up filter and match rules to catch signals */
+ dbus_bus_add_match (spi_global_app_data->bus, "type='signal', interface='org.a11y.atspi.Registry', sender='org.a11y.atspi.Registry'", NULL);
+ dbus_connection_add_filter (spi_global_app_data->bus, signal_filter, NULL,
+ NULL);
+
+ /* Register this app by sending a signal out to AT-SPI registry daemon */
+ if (!atspi_no_register && (!root || !ATK_IS_PLUG (root)))
+ register_application (spi_global_app_data);
+ else
+ get_registered_event_listeners (spi_global_app_data);
+
+ g_atexit (exit_func);
+
+ return 0;