+ done = TRUE;
+}
+
+static gboolean
+post_init (void)
+{
+ during_init_shutdown = FALSE;
+ return FALSE;
+}
+
+static DBusObjectPathVTable droute_vtable =
+{
+ NULL,
+ &droute_message,
+ NULL, NULL, NULL, NULL
+};
+
+static SpiAppData *
+spi_app_init (AtkObject *root)
+{
+ DBusError error;
+ dbus_error_init(&error);
+ SpiAppData *ad = (SpiAppData *)calloc(sizeof(SpiAppData), 1);
+ if (!ad) return NULL;
+ ad->root = root;
+ ad->droute.bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
+ if (!ad->droute.bus)
+ {
+ g_warning("Couldn't connect to dbus: %s\n", error.message);
+ free(ad);
+ return NULL;
+ }
+ //dbus_connection_set_exit_on_disconnect(ad->droute.bus, FALSE);
+ //dbus_bus_register(ad->droute.bus, &error);
+ spi_dbus_initialize (&ad->droute);
+ /* Below line for testing -- it should be removed once at-spi-registryd is working */
+ if (dbus_bus_request_name(ad->droute.bus, "test.atspi.tree", 0, &error)) printf("Got test name.\n");
+ spi_register_tree_object(ad->droute.bus, "/org/freedesktop/atspi/tree");
+ if (!dbus_connection_try_register_fallback (ad->droute.bus, "/org/freedesktop/atspi/accessible/", &droute_vtable, &ad->droute, &error))
+ {
+ g_warning("Couldn't register droute.\n");
+ }
+ dbus_connection_setup_with_g_main(ad->droute.bus, g_main_context_default());
+ return ad;