Index: gdmlogin.c
===================================================================
RCS file: /cvs/gnome/gdm2/gui/gdmlogin.c,v
retrieving revision 1.278
diff -u -r1.278 gdmlogin.c
--- gdmlogin.c	31 May 2006 09:24:08 -0000	1.278
+++ gdmlogin.c	27 Jun 2006 19:02:02 -0000
@@ -3178,6 +3178,7 @@
 	gdm_config_get_int    (GDM_KEY_POSITION_X);
 	gdm_config_get_int    (GDM_KEY_POSITION_Y);
 	gdm_config_get_string (GDM_KEY_PRE_FETCH_PROGRAM);
+	gdm_config_get_bool   (GDM_KEY_ADD_GTK_MODULES);
 	gdm_config_get_bool   (GDM_KEY_SET_POSITION);
 
 	gdmcomm_comm_bulk_stop ();
@@ -3749,6 +3750,7 @@
     gdm_common_setup_cursor (GDK_LEFT_PTR);
 
     gdm_common_pre_fetch_launch ();
+    gdk_common_atspi_launch ();
     gtk_main ();
 
     gdm_kill_thingies ();
Index: gdmcommon.c
===================================================================
RCS file: /cvs/gnome/gdm2/gui/gdmcommon.c,v
retrieving revision 1.26
diff -u -r1.26 gdmcommon.c
--- gdmcommon.c	15 May 2006 18:51:37 -0000	1.26
+++ gdmcommon.c	27 Jun 2006 19:02:02 -0000
@@ -564,6 +564,41 @@
 	return FALSE;
 }
 
+static gboolean 
+pre_atspi_launch (gpointer data){
+	gboolean a11y = gdm_config_get_bool (GDM_KEY_GTK_MODULES);
+	GPid pid = -1;
+	GError *error = NULL;
+	char *command = NULL;
+	gchar **pre_fetch_prog_argv =  NULL;
+
+	if (! a11y)
+		return FALSE;
+
+	command = "/usr/libexec/at-spi-registryd";
+	
+	pre_fetch_prog_argv = ve_split (command);
+	
+	g_spawn_async (".",
+		       pre_fetch_prog_argv,
+		       NULL,
+		       (GSpawnFlags) (G_SPAWN_SEARCH_PATH),
+		       NULL,
+		       NULL,
+		       &pid,
+		       &error);
+
+	return FALSE;
+
+}
+
+void
+gdm_common_atspi_launch (void){
+
+	g_idle_add (pre_atspi_launch (), NULL);
+
+}
+
 void
 gdm_common_pre_fetch_launch (void)
 {
Index: gdmcommon.h
===================================================================
RCS file: /cvs/gnome/gdm2/gui/gdmcommon.h,v
retrieving revision 1.19
diff -u -r1.19 gdmcommon.h
--- gdmcommon.h	13 Mar 2006 21:18:24 -0000	1.19
+++ gdmcommon.h	27 Jun 2006 19:02:02 -0000
@@ -64,6 +64,7 @@
 void	  gdm_common_setup_background_color (gchar *bg_color);
 gchar*	  gdm_common_get_welcomemsg	    (void);
 void	  gdm_common_pre_fetch_launch       (void);
+void      gdm_common_atspi_launch           (void);
 gchar*    gdm_common_expand_text            (const gchar *text);
 gchar*    gdm_common_get_clock              (struct tm **the_tm);
 
Index: greeter/greeter.c
===================================================================
RCS file: /cvs/gnome/gdm2/gui/greeter/greeter.c,v
retrieving revision 1.125
diff -u -r1.125 greeter.c
--- greeter/greeter.c	9 Jun 2006 21:07:42 -0000	1.125
+++ greeter/greeter.c	27 Jun 2006 19:02:02 -0000
@@ -803,7 +803,7 @@
 	gdm_config_get_string (GDM_KEY_SESSION_DESKTOP_DIR);
 	gdm_config_get_string (GDM_KEY_PID_FILE);
 	gdm_config_get_string (GDM_KEY_PRE_FETCH_PROGRAM);
-
+	gdm_config_get_string (GDM_KEY_ADD_GTK_MODULES);
 	gdmcomm_comm_bulk_stop ();
 }
 
