Fix missing NULL argument to g_strconcat.
[platform/upstream/at-spi2-core.git] / registryd / registry-main.c
index b00389f..083de19 100644 (file)
 #include "registry.h"
 #include "deviceeventcontroller.h"
 
-#if !defined ATSPI_INTROSPECTION_PATH
-    #error "No introspection XML directory defined"
-#endif
-
-#ifdef RELOCATE
-#define DBUS_GCONF_KEY  "/desktop/gnome/interface/at-spi-dbus"
-#else
 #define CORBA_GCONF_KEY  "/desktop/gnome/interface/at-spi-corba"
-#endif
 
 static gboolean need_to_quit ();
 
@@ -96,8 +88,36 @@ session_manager_connect (void)
 }
 
 static void
+kill_accessibility_bus ()
+{
+  FILE *fp;
+  const char *home;
+  char *name;
+  int pid;
+
+  home = getenv ("HOME");
+  if (!home)
+    return;
+  name = g_strconcat (home, "/", ".atspi-dbus-bus.pid", NULL);
+  if (!name)
+    return;
+
+  fp = fopen (name, "r");
+  if (fp)
+  {
+    if (fscanf (fp, "%d", &pid) == 1)
+    {
+      kill (&pid, SIGTERM);
+    }
+    fclose (fp);
+  }
+  g_free (name);
+}
+
+static void
 stop_cb (gpointer data)
 {
+        kill_accessibility_bus ();
         g_main_loop_quit (mainloop);
 }
 
@@ -131,6 +151,7 @@ query_end_session_cb (guint flags, gpointer data)
 static void
 end_session_cb (guint flags, gpointer data)
 {
+        kill_accessibility_bus ();
         end_session_response (TRUE, NULL);
         g_main_loop_quit (mainloop);
 }
@@ -268,6 +289,7 @@ spi_get_bus (void)
      else
      {
         bus = dbus_connection_open (data, &error);
+        XFree (data);
          if (!bus)
          {
              g_error ("AT-SPI: Couldn't connect to bus: %s\n", error.message);
@@ -279,6 +301,7 @@ spi_get_bus (void)
          } 
      }
 
+  XCloseDisplay (bridge_display);
      return bus;
 }
 
@@ -292,7 +315,6 @@ main (int argc, char **argv)
 {
   SpiRegistry *registry;
   SpiDEController *dec;
-  gchar *introspection_directory;
 
   DBusConnection *bus = NULL;
 
@@ -338,11 +360,6 @@ main (int argc, char **argv)
       g_print ("SpiRegistry daemon is running with well-known name - %s\n", dbus_name);
     }
 
-  /* Get D-Bus introspection directory */
-  introspection_directory = (char *) g_getenv("ATSPI_INTROSPECTION_PATH");
-  if (introspection_directory == NULL)
-      introspection_directory = ATSPI_INTROSPECTION_PATH;
-
   registry = spi_registry_new (bus);
   dec = spi_registry_dec_new (registry, bus);
 
@@ -368,6 +385,8 @@ need_to_quit ()
   GObject *gconf_client;       /* really a GConfClient */
   gboolean ret;
 
+  g_type_init ();
+
   gconf = dlopen ("libgconf-2.so", RTLD_LAZY);
   if (gconf)
     {
@@ -375,7 +394,7 @@ need_to_quit ()
       gconf_client_get_bool = dlsym (gconf, "gconf_client_get_bool");
   }
 
-  if (!gconf_client || !gconf_client_get_bool)
+  if (!gconf_client_get_default || !gconf_client_get_bool)
     {
       if (gconf)
         dlclose (gconf);
@@ -387,11 +406,7 @@ need_to_quit ()
  * at-spi-dbus gconf key has been set.
    */
   gconf_client = gconf_client_get_default ();
-#ifdef RELOCATE
-  ret = !gconf_client_get_bool (gconf_client, DBUS_GCONF_KEY, NULL);
-#else
   ret = gconf_client_get_bool (gconf_client, CORBA_GCONF_KEY, NULL);
-#endif
   g_object_unref (gconf_client);
 
   return ret;