Fix missing NULL argument to g_strconcat.
[platform/upstream/at-spi2-core.git] / registryd / registry-main.c
index 720cd52..083de19 100644 (file)
 #include "registry.h"
 #include "deviceeventcontroller.h"
 
-#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 ();
 
@@ -92,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);
 }
 
@@ -127,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);
 }
@@ -264,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);
@@ -275,6 +301,7 @@ spi_get_bus (void)
          } 
      }
 
+  XCloseDisplay (bridge_display);
      return bus;
 }
 
@@ -379,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;