d9f59d9
--- gdm-2.18.0/daemon/slave.c.be-more-verbose	2007-04-17 10:17:28.000000000 -0400
d9f59d9
+++ gdm-2.18.0/daemon/slave.c	2007-04-17 10:47:30.000000000 -0400
d9f59d9
@@ -966,6 +966,8 @@
d9f59d9
 static void 
d9f59d9
 gdm_screen_init (GdmDisplay *display) 
d9f59d9
 {
d9f59d9
+
d9f59d9
+        gdm_debug ("gdm_screen_init: initializing xinerama, etc");
d9f59d9
 #ifdef HAVE_XFREE_XINERAMA
d9f59d9
 	int (* old_xerror_handler) (Display *, XErrorEvent *);
d9f59d9
 	gboolean have_xinerama = FALSE;
d9f59d9
@@ -982,36 +984,52 @@
d9f59d9
 		have_xinerama = FALSE;
d9f59d9
 
d9f59d9
 	if (have_xinerama) {
d9f59d9
+                gdm_debug ("gdm_screen_init: machine has xinerama");
d9f59d9
 		int screen_num;
d9f59d9
 		int xineramascreen;
d9f59d9
 		XineramaScreenInfo *xscreens =
d9f59d9
 			XineramaQueryScreens (display->dsp,
d9f59d9
 					      &screen_num);
d9f59d9
 
d9f59d9
+                gdm_debug ("gdm_screen_init: display %s has %d screens", display->name, screen_num);
d9f59d9
 
d9f59d9
 		if G_UNLIKELY (screen_num <= 0)
d9f59d9
 			gdm_fail ("Xinerama active, but <= 0 screens?");
d9f59d9
 
d9f59d9
 		if (screen_num <= gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN))
d9f59d9
+                  {
d9f59d9
+                        gdm_debug ("gdm_screen_init: xinerama screen key is bogus (%d when screen_num is %d)",
d9f59d9
+                                   gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN), screen_num);
d9f59d9
 			gdm_set_value_int (GDM_KEY_XINERAMA_SCREEN, 0);
d9f59d9
+                  }
d9f59d9
 
d9f59d9
 		xineramascreen = gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN);
d9f59d9
+                gdm_debug ("gdm_screen_init: using head %d", screen_num);
d9f59d9
 
d9f59d9
 		display->screenx = xscreens[xineramascreen].x_org;
d9f59d9
 		display->screeny = xscreens[xineramascreen].y_org;
d9f59d9
 		display->screenwidth = xscreens[xineramascreen].width;
d9f59d9
 		display->screenheight = xscreens[xineramascreen].height;
d9f59d9
 
d9f59d9
+                gdm_debug ("gdm_screen_init: head %d has dimensions (%dx%d+%d+%d)", 
d9f59d9
+                           display->screenwidth, display->screenheight,
d9f59d9
+                           display->screenx, display->screeny);
d9f59d9
+
d9f59d9
 		display->lrh_offsetx =
d9f59d9
 			DisplayWidth (display->dsp,
d9f59d9
 				      DefaultScreen (display->dsp))
d9f59d9
 			- (display->screenx + display->screenwidth);
d9f59d9
+
d9f59d9
+                gdm_debug ("gdm_screen_init: display->lrh_offsetx = %d\n", display->lrh_offsetx);
d9f59d9
 		display->lrh_offsety =
d9f59d9
 			DisplayHeight (display->dsp,
d9f59d9
 				       DefaultScreen (display->dsp))
d9f59d9
 			- (display->screeny + display->screenheight);
d9f59d9
+                gdm_debug ("gdm_screen_init: display->lrh_offsety = %d\n", display->lrh_offsety);
d9f59d9
 
d9f59d9
 		XFree (xscreens);
d9f59d9
+
d9f59d9
+                gdm_debug ("gdm_screen_init: xinerama configured\n");
d9f59d9
 	} else
d9f59d9
 #elif HAVE_SOLARIS_XINERAMA
d9f59d9
  /* This code from GDK, Copyright (C) 2002 Sun Microsystems */
d9f59d9
@@ -1034,6 +1052,7 @@
d9f59d9
 		unsigned char  hints[16];
d9f59d9
 		int xineramascreen;
d9f59d9
 		
d9f59d9
+                gdm_debug ("gdm_screen_init: machine has sun xinerama");
d9f59d9
 		result = XineramaGetInfo (display->dsp, 0, monitors, hints, &n_monitors);
d9f59d9
 		/* Yes I know it should be Success but the current implementation 
d9f59d9
 		 * returns the num of monitor
d9f59d9
@@ -1062,6 +1081,8 @@
d9f59d9
 	} else
d9f59d9
 #endif
d9f59d9
 	{
d9f59d9
+
d9f59d9
+                gdm_debug ("gdm_screen_init: machine doesn't have xinerama");
d9f59d9
 		display->screenx = 0;
d9f59d9
 		display->screeny = 0;
d9f59d9
 		display->screenwidth = 0; /* we'll use the gdk size */
d9f59d9
@@ -1412,6 +1433,7 @@
d9f59d9
     else
d9f59d9
 	    maxtries = 10;
d9f59d9
     
d9f59d9
+    gdm_debug ("gdm_slave_run: maxtries = %d\n", maxtries);
d9f59d9
     while (d->handled &&
d9f59d9
 	   openretries < maxtries &&
d9f59d9
 	   d->dsp == NULL &&
d9f59d9
@@ -1428,9 +1450,11 @@
d9f59d9
 	}
d9f59d9
     }
d9f59d9
 
d9f59d9
+    gdm_debug ("gdm_slave_run: display %s is now open\n", d->name);
d9f59d9
     /* Really this will only be useful for the first local server,
d9f59d9
        since that's the only time this can really be on */
d9f59d9
     while G_UNLIKELY (gdm_wait_for_go) {
d9f59d9
+            gdm_debug ("gdm_slave_run: blocking until told to continue\n");
d9f59d9
 	    struct timeval tv;
d9f59d9
 	    /* Wait 1 second. */
d9f59d9
 	    tv.tv_sec = 1;
d9f59d9
@@ -1443,6 +1467,7 @@
d9f59d9
 
d9f59d9
     /* Set the busy cursor */
d9f59d9
     if (d->dsp != NULL) {
d9f59d9
+            gdm_debug ("gdm_slave_run: settings a busy cursor\n");
d9f59d9
 	    Cursor xcursor = XCreateFontCursor (d->dsp, GDK_WATCH);
d9f59d9
 	    XDefineCursor (d->dsp,
d9f59d9
 			   DefaultRootWindow (d->dsp),
d9f59d9
@@ -1451,20 +1476,24 @@
d9f59d9
 	    XSync (d->dsp, False);
d9f59d9
     }
d9f59d9
 
d9f59d9
+    gdm_debug ("gdm_slave_run: pausing for no reason at all\n");
d9f59d9
     /* Just a race avoiding sleep, probably not necessary though,
d9f59d9
      * but doesn't hurt anything */
d9f59d9
     if ( ! d->handled)
d9f59d9
 	    gdm_sleep_no_signal (1);
d9f59d9
 
d9f59d9
     if (SERVER_IS_LOCAL (d)) {
d9f59d9
+            gdm_debug ("gdm_slave_run: display %s is local\n", d->name);
d9f59d9
 	    gdm_slave_send (GDM_SOP_START_NEXT_LOCAL, FALSE);
d9f59d9
     }
d9f59d9
 
d9f59d9
+    gdm_debug ("gdm_slave_run: checking pending notifies\n");
d9f59d9
     check_notifies_now ();
d9f59d9
 
d9f59d9
     /* something may have gone wrong, try xfailed, if local (non-flexi),
d9f59d9
      * the toplevel loop of death will handle us */ 
d9f59d9
     if G_UNLIKELY (d->handled && d->dsp == NULL) {
d9f59d9
+            gdm_debug ("gdm_slave_run: d->dsp is NULL\n");
d9f59d9
 	    if (d->type == TYPE_STATIC)
d9f59d9
 		    gdm_slave_quick_exit (DISPLAY_XFAILED);
d9f59d9
 	    else
d9f59d9
@@ -1477,6 +1506,7 @@
d9f59d9
 
d9f59d9
     /* If XDMCP setup pinging */
d9f59d9
     if ( ! SERVER_IS_LOCAL (d) && pinginterval > 0) {
d9f59d9
+            gdm_debug ("gdm_slave_run: installing a ping alarm at interval %d\n", pinginterval);
d9f59d9
 	    alarm (pinginterval);
d9f59d9
     }
d9f59d9
 
d9f59d9
@@ -1492,17 +1522,27 @@
d9f59d9
 
d9f59d9
     /* check log stuff for the server, this is done here
d9f59d9
      * because it's really a race */
d9f59d9
+
d9f59d9
     if (SERVER_IS_LOCAL (d))
d9f59d9
+      {
d9f59d9
+            gdm_debug ("gdm_slave_run: checklog for vt");
d9f59d9
 	    gdm_server_checklog (d);
d9f59d9
+      }
d9f59d9
 
d9f59d9
     if ( ! d->handled) {
d9f59d9
+
d9f59d9
+            gdm_debug ("gdm_slave_run: !d->handled and servpid = %d", d->servpid);
d9f59d9
 	    /* yay, we now wait for the server to die */
d9f59d9
 	    while (d->servpid > 0) {
d9f59d9
+                    gdm_debug ("gdm_slave_run: waiting for signal");
d9f59d9
 		    pause ();
d9f59d9
 	    }
d9f59d9
+
d9f59d9
+            gdm_debug ("gdm_slave_run: quick exit");
d9f59d9
 	    gdm_slave_quick_exit (DISPLAY_REMANAGE);
d9f59d9
     } else if (d->use_chooser) {
d9f59d9
 	    /* this usually doesn't return */
d9f59d9
+            gdm_debug ("gdm_slave_run: running chooser");
d9f59d9
 	    gdm_slave_chooser ();  /* Run the chooser */
d9f59d9
 	    return;
d9f59d9
     } else if (d->type == TYPE_STATIC &&
d9f59d9
@@ -1511,6 +1551,7 @@
d9f59d9
 	       strcmp (ParsedAutomaticLogin, gdm_root_user ()) != 0) {
d9f59d9
 	    gdm_first_login = FALSE;
d9f59d9
 
d9f59d9
+            gdm_debug ("gdm_slave_run: starting automatic login");
d9f59d9
 	    d->logged_in = TRUE;
d9f59d9
 	    gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
d9f59d9
 	    gdm_slave_send_string (GDM_SOP_LOGIN, ParsedAutomaticLogin);
d9f59d9
@@ -1540,9 +1581,12 @@
d9f59d9
 	    gdm_first_login = FALSE;
d9f59d9
 
d9f59d9
     do {
d9f59d9
+
d9f59d9
+            gdm_debug ("gdm_slave_run: checking notifies");
d9f59d9
 	    check_notifies_now ();
d9f59d9
 
d9f59d9
 	    if ( ! greet) {
d9f59d9
+                    gdm_debug ("gdm_slave_run: starting greeter");
d9f59d9
 		    gdm_slave_greeter ();  /* Start the greeter */
d9f59d9
 		    greeter_no_focus = FALSE;
d9f59d9
 		    greeter_disabled = FALSE;