2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001, 2002 Sun Microsystems Inc.,
6 * Copyright 2001, 2002 Ximian, Inc.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
31 #include <libbonobo.h>
32 #include <glib/gmain.h>
35 #define spi_get_display() GDK_DISPLAY()
37 static void registry_set_ior (SpiRegistry *registry);
40 main (int argc, char **argv)
44 const char *display_name;
46 SpiRegistry *registry;
48 if (!bonobo_init (&argc, argv))
50 g_error ("Could not initialize oaf / Bonobo");
53 obj_id = "OAFIID:Accessibility_Registry:1.0";
55 registry = spi_registry_new ();
57 display_name = g_getenv ("AT_SPI_DISPLAY");
60 display_name = g_getenv ("DISPLAY");
61 cp = strrchr (display_name, '.');
62 dp = strrchr (display_name, ':');
63 if (cp && dp && (cp > dp)) *cp = '\0';
66 ret = bonobo_activation_register_active_server (
68 bonobo_object_corba_objref (bonobo_object (registry)),
71 if (ret != Bonobo_ACTIVATION_REG_SUCCESS)
74 fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon was already running.\n");
80 fprintf (stderr, "SpiRegistry Message: SpiRegistry daemon is running.\n");
82 registry_set_ior (registry);
90 registry_set_ior (SpiRegistry *registry){
92 Atom AT_SPI_IOR = XInternAtom (spi_get_display (), "AT_SPI_IOR", FALSE);
93 char *iorstring = NULL;
95 CORBA_exception_init (&ev);
97 iorstring = CORBA_ORB_object_to_string (bonobo_activation_orb_get (),
98 bonobo_object_corba_objref (bonobo_object (registry)),
101 XChangeProperty (spi_get_display(),
102 XDefaultRootWindow (spi_get_display ()),
103 AT_SPI_IOR, (Atom) 31, 8,
105 (unsigned char *) iorstring,
106 iorstring ? strlen (iorstring) : 0);
108 if (ev._major != CORBA_NO_EXCEPTION)
110 g_error ("Error setting IOR %s",
111 CORBA_exception_id (&ev));
112 CORBA_exception_free (&ev);
115 CORBA_exception_free (&ev);