X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=registryd%2Fregistry-main.c;h=08a2db3de37d40539756da1c8d4ddae44b38ad76;hb=577c0ee0ef705b147742c08458d62fc5520206b0;hp=71b86f612323cdde0f5f4f2dbb9b1fbd0db286fb;hpb=8cc22dc406e33c90b501d661208fce3d457afac1;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/registryd/registry-main.c b/registryd/registry-main.c index 71b86f6..08a2db3 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,16 +25,24 @@ #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) { int ret; char *obj_id; + const char *display_name; + char *cp, *dp; SpiRegistry *registry; if (!bonobo_init (&argc, argv)) @@ -45,9 +54,19 @@ main (int argc, char **argv) registry = spi_registry_new (); - ret = bonobo_activation_active_server_register ( + 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'; + } + + ret = bonobo_activation_register_active_server ( obj_id, - bonobo_object_corba_objref (bonobo_object (registry))); + bonobo_object_corba_objref (bonobo_object (registry)), + NULL); if (ret != Bonobo_ACTIVATION_REG_SUCCESS) { @@ -60,9 +79,39 @@ main (int argc, char **argv) #ifdef AT_SPI_DEBUG fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon is running.\n"); #endif + registry_set_ior (registry); bonobo_main (); } return 0; } +static void +registry_set_ior (SpiRegistry *registry){ + CORBA_Environment ev; + Atom AT_SPI_IOR = XInternAtom (spi_get_display (), "AT_SPI_IOR", FALSE); + char *iorstring = NULL; + + CORBA_exception_init (&ev); + + iorstring = CORBA_ORB_object_to_string (bonobo_activation_orb_get (), + bonobo_object_corba_objref (bonobo_object (registry)), + &ev); + + XChangeProperty (spi_get_display(), + XDefaultRootWindow (spi_get_display ()), + AT_SPI_IOR, (Atom) 31, 8, + PropModeReplace, + (unsigned char *) iorstring, + iorstring ? strlen (iorstring) : 0); + + if (ev._major != CORBA_NO_EXCEPTION) + { + g_error ("Error setting IOR %s", + CORBA_exception_id (&ev)); + CORBA_exception_free (&ev); + } + + CORBA_exception_free (&ev); + +}