X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=registryd%2Fregistry-main.c;h=d4c280e2c2e5538dfdbe61b70e165816b0de6e8b;hb=0724cea984b691fdc60a020b237828e9ef018cd7;hp=509e2aa3e342bb6aef4a5365c29c7fda2d02e3bc;hpb=408978dd34f3338e49b6ace5f60b7606579ce7a9;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/registryd/registry-main.c b/registryd/registry-main.c index 509e2aa..d4c280e 100644 --- a/registryd/registry-main.c +++ b/registryd/registry-main.c @@ -2,7 +2,8 @@ * AT-SPI - Assistive Technology Service Provider Interface * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) * - * Copyright 2001 Sun Microsystems Inc. + * Copyright 2001, 2002 Sun Microsystems Inc., + * Copyright 2001, 2002 Ximian, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -24,44 +25,78 @@ #include #endif -#include +#include +#include +#include #include + +#include + #include "registry.h" +#define spi_get_display() GDK_DISPLAY() + +static void registry_set_ior (SpiRegistry *registry); + int -main (int argc, - char **argv) +main (int argc, char **argv) { - SpiRegistry *registry; - GSource *keyevent_source; - char *obj_id; + int ret; + char *obj_id; + const char *display_name; + char *cp, *dp; + SpiRegistry *registry; + DBusError error; + GMainLoop *mainloop; + + g_type_init(); - if (!bonobo_init (&argc, argv)) - { - g_error ("Could not initialize oaf / Bonobo"); - } + obj_id = "OAFIID:Accessibility_Registry:1.0"; - obj_id = "OAFIID:Accessibility_SpiRegistry:proto0.1"; + registry = spi_registry_new (); - registry = spi_registry_new (); + display_name = g_getenv ("AT_SPI_DISPLAY"); + if (!display_name) + { + display_name = g_getenv ("DISPLAY"); + cp = strrchr (display_name, '.'); + dp = strrchr (display_name, ':'); + if (cp && dp && (cp > dp)) *cp = '\0'; + } - bonobo_activation_active_server_register ( - obj_id, - bonobo_object_corba_objref (bonobo_object (registry))); + dbus_error_init (&error); + mainloop = g_main_loop_new (NULL, FALSE); + ret= dbus_bus_request_name(registry->droute.bus, SPI_DBUS_NAME_REGISTRY, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error); + if (ret == DBUS_REQUEST_NAME_REPLY_EXISTS) + { #ifdef AT_SPI_DEBUG - fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon is running.\n"); + fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon was already running.\n"); #endif - - gdk_init(&argc, &argv); - g_timeout_add_full (G_PRIORITY_HIGH_IDLE, 200, registry->kbd_event_hook, registry, NULL); -/* keyevent_source = - g_source_new (registry->kbd_event_hook, sizeof (GSourceFunc)); - g_source_attach (keyevent_source, g_main_conspi_text_default());*/ - bonobo_main (); - - return 0; + } + else + { +#ifdef AT_SPI_DEBUG + fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon is running.\n"); +#endif + registry_set_ior (registry); + g_main_loop_run (mainloop); + } + + return 0; } +static void +registry_set_ior (SpiRegistry *registry){ + Atom AT_SPI_IOR = XInternAtom (spi_get_display (), "AT_SPI_IOR", FALSE); + char *iorstring = NULL; + iorstring = SPI_DBUS_NAME_REGISTRY; + XChangeProperty (spi_get_display(), + XDefaultRootWindow (spi_get_display ()), + AT_SPI_IOR, (Atom) 31, 8, + PropModeReplace, + (unsigned char *) iorstring, + iorstring ? strlen (iorstring) : 0); +}