rpms/gdm/devel gdm-2.6.0.7-wait-for-bootup.patch, 1.3, 1.4 gdm.spec, 1.67, 1.68

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Fri Apr 15 16:05:32 UTC 2005


Update of /cvs/dist/rpms/gdm/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv15646

Modified Files:
	gdm-2.6.0.7-wait-for-bootup.patch gdm.spec 
Log Message:
Work on early-login


gdm-2.6.0.7-wait-for-bootup.patch:
 daemon/gdm.c          |   12 ++++
 daemon/gdm.h          |    8 ++
 daemon/slave.c        |  135 +++++++++++++++++++++++++++++++++++++++++++-------
 daemon/slave.h        |    3 +
 daemon/verify-pam.c   |   53 +++++++++++++++++--
 gui/greeter/greeter.c |    9 ++-
 6 files changed, 194 insertions(+), 26 deletions(-)

Index: gdm-2.6.0.7-wait-for-bootup.patch
===================================================================
RCS file: /cvs/dist/rpms/gdm/devel/gdm-2.6.0.7-wait-for-bootup.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gdm-2.6.0.7-wait-for-bootup.patch	29 Mar 2005 15:32:50 -0000	1.3
+++ gdm-2.6.0.7-wait-for-bootup.patch	15 Apr 2005 16:05:29 -0000	1.4
@@ -1,32 +1,5 @@
---- gdm-2.6.0.7/gui/greeter/greeter.c.wait-for-bootup	2005-01-13 21:07:57.000000000 -0500
-+++ gdm-2.6.0.7/gui/greeter/greeter.c	2005-03-29 10:11:54.000000000 -0500
-@@ -567,9 +567,15 @@
- static gboolean
- key_press_event (GtkWidget *widget, GdkEventKey *key, gpointer data)
- {
--  if (DOING_GDM_DEVELOPMENT && (key->keyval == GDK_Escape))
-+  if (key->keyval == GDK_Escape)
-     {
-+    if (DOING_GDM_DEVELOPMENT)
-       gtk_main_quit ();
-+    else
-+    {
-+      printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_LOGIN); 
-+      fflush (stdout);
-+    }
-       
-       return TRUE;
-     }
-@@ -1124,7 +1130,6 @@
- 
-   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- 
--  if G_UNLIKELY (DOING_GDM_DEVELOPMENT)
-     g_signal_connect (G_OBJECT (window), "key_press_event",
- 		      G_CALLBACK (key_press_event), NULL);
-   
---- gdm-2.6.0.7/daemon/gdm.c.wait-for-bootup	2004-10-26 18:35:17.000000000 -0400
-+++ gdm-2.6.0.7/daemon/gdm.c	2005-03-29 10:11:54.000000000 -0500
+--- gdm-2.6.0.8/daemon/gdm.c.wait-for-bootup	2005-03-07 15:40:10.000000000 -0500
++++ gdm-2.6.0.8/daemon/gdm.c	2005-04-15 12:02:30.914588000 -0400
 @@ -100,6 +100,7 @@
  pid_t gdm_main_pid = 0;		/* PID of the main daemon */
  
@@ -35,7 +8,23 @@
  
  gboolean print_version = FALSE; /* print version number and quit */
  gboolean preserve_ld_vars = FALSE; /* Preserve the ld environment variables */
-@@ -1898,6 +1899,8 @@
+@@ -156,6 +157,7 @@
+ gchar *GdmGlobalFaceDir = NULL;
+ gint GdmXineramaScreen = 0;
+ gchar *GdmGreeter = NULL;
++gchar *GdmBackgroundColor = NULL;
+ gchar *GdmRemoteGreeter = NULL;
+ gchar *GdmGtkModulesList = NULL;
+ gchar *GdmChooser = NULL;
+@@ -349,6 +351,7 @@
+     GdmAlwaysRestartServer = ve_config_get_bool (cfg, GDM_KEY_ALWAYSRESTARTSERVER);
+     GdmGreeter = ve_config_get_string (cfg, GDM_KEY_GREETER);
+     GdmRemoteGreeter = ve_config_get_string (cfg, GDM_KEY_REMOTEGREETER);
++    GdmBackgroundColor = ve_config_get_string (cfg, GDM_KEY_BACKGROUNDCOLOR);
+     GdmAddGtkModules = ve_config_get_bool (cfg, GDM_KEY_ADD_GTK_MODULES);
+     GdmDoubleLoginWarning = ve_config_get_bool (cfg, GDM_KEY_DOUBLELOGINWARNING);
+     GdmDisplayLastLogin = ve_config_get_bool (cfg, GDM_KEY_DISPLAY_LAST_LOGIN);
+@@ -1898,6 +1901,8 @@
  	  &print_version, 0, N_("Print GDM version"), NULL },
  	{ "wait-for-go", '\0', POPT_ARG_NONE,
  	  &gdm_wait_for_go, 0, N_("Start the first X server but then halt until we get a GO in the fifo"), NULL },
@@ -44,7 +33,7 @@
  	{ "monte-carlo-sqrt2", 0, POPT_ARG_NONE,
  	  &monte_carlo_sqrt2, 0, NULL, NULL },
          POPT_AUTOHELP
-@@ -2855,6 +2858,13 @@
+@@ -2855,6 +2860,13 @@
  				gdm_xdmcp_run();
  			}
  		}
@@ -58,8 +47,8 @@
  	} else if (strncmp (msg, GDM_SOP_WRITE_X_SERVERS " ",
  		            strlen (GDM_SOP_WRITE_X_SERVERS " ")) == 0) {
  		GdmDisplay *d;
---- gdm-2.6.0.7/daemon/slave.h.wait-for-bootup	2004-05-06 18:33:41.000000000 -0400
-+++ gdm-2.6.0.7/daemon/slave.h	2005-03-29 10:11:54.000000000 -0500
+--- gdm-2.6.0.8/daemon/slave.h.wait-for-bootup	2004-05-06 18:33:41.000000000 -0400
++++ gdm-2.6.0.8/daemon/slave.h	2005-04-15 12:02:16.555959000 -0400
 @@ -41,6 +41,9 @@
  /* This is the slave child handler so that we can chain to it from elsewhere */
  void	 gdm_slave_child_handler (int sig);
@@ -70,8 +59,8 @@
  #endif /* GDM_SLAVE_H */
  
  /* EOF */
---- gdm-2.6.0.7/daemon/gdm.h.wait-for-bootup	2005-03-29 10:11:54.000000000 -0500
-+++ gdm-2.6.0.7/daemon/gdm.h	2005-03-29 10:11:54.000000000 -0500
+--- gdm-2.6.0.8/daemon/gdm.h.wait-for-bootup	2005-04-15 12:02:16.482033000 -0400
++++ gdm-2.6.0.8/daemon/gdm.h	2005-04-15 12:02:16.561954000 -0400
 @@ -115,6 +115,7 @@
  #define GDM_INTERRUPT_SELECT_USER 'U'
  #define GDM_INTERRUPT_LOGIN_SOUND 'L'
@@ -80,7 +69,7 @@
  
  /* The dreaded miscellaneous category */
  #define FIELD_SIZE 256
-@@ -543,6 +544,10 @@
+@@ -542,6 +543,10 @@
     the --wait-for-go command line option */
  #define GDM_SOP_GO "GO" /* no arguments */
  
@@ -91,7 +80,7 @@
  /* sometimes we can't do a syslog so we tell the main daemon */
  #define GDM_SOP_SYSLOG "SYSLOG" /* <pid> <type> <message> */
  
-@@ -591,6 +596,7 @@
+@@ -590,6 +595,7 @@
  #define GDM_NOTIFY_DIRTY_SERVERS "DIRTY_SERVERS"
  #define GDM_NOTIFY_SOFT_RESTART_SERVERS "SOFT_RESTART_SERVERS"
  #define GDM_NOTIFY_GO "GO"
@@ -99,14 +88,14 @@
  #define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
  
  /* Ack for a slave message */
-@@ -941,4 +947,4 @@
+@@ -940,4 +946,4 @@
  
  #endif /* GDM_H */
  
 -/* EOF */
 +
---- gdm-2.6.0.7/daemon/slave.c.wait-for-bootup	2005-03-29 10:11:54.000000000 -0500
-+++ gdm-2.6.0.7/daemon/slave.c	2005-03-29 10:12:33.000000000 -0500
+--- gdm-2.6.0.8/daemon/slave.c.wait-for-bootup	2005-04-15 12:02:16.493024000 -0400
++++ gdm-2.6.0.8/daemon/slave.c	2005-04-15 12:02:30.924578000 -0400
 @@ -26,6 +26,7 @@
  #include <stdio.h>
  #include <stdlib.h>
@@ -142,7 +131,15 @@
  /* Configuration option variables */
  extern gchar *GdmUser;
  extern uid_t GdmUserId;
-@@ -212,6 +219,9 @@
+@@ -156,6 +163,7 @@
+ extern gint GdmXineramaScreen;
+ extern gchar *GdmGreeter;
+ extern gchar *GdmRemoteGreeter;
++extern gchar *GdmBackgroundColor;
+ extern gchar *GdmGtkModulesList;
+ extern gchar *GdmChooser;
+ extern gchar *GdmDisplayInit;
+@@ -211,6 +219,9 @@
  static void	check_notifies_now (void);
  static void	restart_the_greeter (void);
  
@@ -152,7 +149,7 @@
  /* Yay thread unsafety */
  static gboolean x_error_occured = FALSE;
  static gboolean gdm_got_ack = FALSE;
-@@ -1101,7 +1111,7 @@
+@@ -1099,7 +1110,7 @@
  	gdm_slave_send_string (GDM_SOP_QUERYLOGIN, user);
  	if G_LIKELY (ve_string_empty (gdm_ack_response))
  	       return TRUE;	
@@ -161,7 +158,46 @@
  	if (vec == NULL)
  		return TRUE;
  
-@@ -1952,6 +1962,48 @@
+@@ -1297,8 +1308,27 @@
+ 	    check_notifies_now ();
+     }
+ 
+-    /* Set the busy cursor */
++    /* Set the busy cursor and the background */
+     if (d->dsp != NULL) {
++            PangoColor pango_color;
++            if (GdmBackgroundColor && 
++                pango_color_parse (&pango_color, GdmBackgroundColor)) {
++	            XWindowAttributes attr;
++        	    XColor color;
++
++	            XGetWindowAttributes (d->dsp, 
++					  DefaultRootWindow (d->dsp),
++                	                  &attr);
++	            color.red = pango_color.red;
++        	    color.green = pango_color.green;
++	            color.blue = pango_color.blue;
++        	    XAllocColor (d->dsp, attr.colormap, &color);
++	            XSetWindowBackground (d->dsp, 
++        	                          DefaultRootWindow (d->dsp),
++                	                  color.pixel);
++		    XClearWindow (d->dsp, DefaultRootWindow (d->dsp)); 
++	    }
++
+ 	    Cursor xcursor = XCreateFontCursor (d->dsp, GDK_WATCH);
+ 	    XDefineCursor (d->dsp,
+ 			   DefaultRootWindow (d->dsp),
+@@ -1360,6 +1390,9 @@
+ 	       gdm_first_login &&
+ 	       ! ve_string_empty (ParsedAutomaticLogin) &&
+ 	       strcmp (ParsedAutomaticLogin, gdm_root_user ()) != 0) {
++
++            gdm_slave_wait_for_bootup ();
++
+ 	    gdm_first_login = FALSE;
+ 
+ 	    d->logged_in = TRUE;
+@@ -1950,6 +1983,50 @@
  
  	gdm_debug ("gdm_slave_wait_for_login: got_login for '%s'",
  		   ve_sure_string (login));
@@ -195,8 +231,10 @@
 +	gchar *message;
 +
 +	while (gdm_wait_for_bootup && !gdm_login_is_canceled) {
-+
-+		if (pending_greeter_message ())
++	
++		if (greeter_fd_in < 0)
++		  sleep (1);
++		else if (pending_greeter_message ())
 +		{
 +			/* get_greeter_message() has a side effect
 +			 * of setting login_canceled when the user
@@ -210,16 +248,22 @@
  }
  
  /* If path starts with a "trusted" directory, don't sanity check things */
-@@ -4707,6 +4759,8 @@
+@@ -4702,6 +4779,14 @@
  				}
  			} else if (strcmp (&s[1], GDM_NOTIFY_GO) == 0) {
  				gdm_wait_for_go = FALSE;
 +			} else if (strcmp (&s[1], GDM_NOTIFY_BOOTUP_COMPLETE) == 0) {
++				if ( gdm_wait_for_bootup &&
++				    ! ve_string_empty (GdmTimedLogin) &&
++        			    (d->console || GdmAllowRemoteAutoLogin)) { 
++					gdm_slave_greeter_ctl_no_ret (GDM_STARTTIMER, "");
++				}
 +				gdm_wait_for_bootup = FALSE;
++ 
  			} else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) {
  				gdm_twiddle_pointer (d);
  			}
-@@ -4871,6 +4925,9 @@
+@@ -4866,6 +4951,9 @@
  				d->theme_name = g_strdup (&msg[2]);
  			gdm_slave_send_string (GDM_SOP_CHOSEN_THEME, &msg[2]);
  			return TRUE;
@@ -229,7 +273,7 @@
  		default:
  			break;
  		}
-@@ -4885,6 +4942,30 @@
+@@ -4880,6 +4968,30 @@
  	return FALSE;
  }
  
@@ -260,7 +304,7 @@
  
  char * 
  gdm_slave_greeter_ctl (char cmd, const char *str)
-@@ -4909,21 +4990,7 @@
+@@ -4904,21 +5016,7 @@
      sched_yield ();
  #endif
  
@@ -283,7 +327,7 @@
  
      /* user responses take kind of random amount of time */
      gdm_random_tick ();
-@@ -5256,7 +5323,8 @@
+@@ -5246,7 +5344,8 @@
  {
  	if (do_timed_login ||
  	    do_configurator ||
@@ -293,8 +337,8 @@
  		return FALSE;
  	return TRUE;
  }
---- gdm-2.6.0.7/daemon/verify-pam.c.wait-for-bootup	2004-12-14 15:27:35.000000000 -0500
-+++ gdm-2.6.0.7/daemon/verify-pam.c	2005-03-29 10:11:54.000000000 -0500
+--- gdm-2.6.0.8/daemon/verify-pam.c.wait-for-bootup	2005-03-07 15:40:10.000000000 -0500
++++ gdm-2.6.0.8/daemon/verify-pam.c	2005-04-15 12:02:16.588927000 -0400
 @@ -59,6 +59,8 @@
  extern gid_t GdmGroupId;
  
@@ -399,3 +443,30 @@
      pamerr = pam_acct_mgmt (pamh, null_tok);
      switch (pamerr) {
      case PAM_SUCCESS :
+--- gdm-2.6.0.8/gui/greeter/greeter.c.wait-for-bootup	2005-03-04 14:55:38.000000000 -0500
++++ gdm-2.6.0.8/gui/greeter/greeter.c	2005-04-15 12:02:16.541974000 -0400
+@@ -569,9 +569,15 @@
+ static gboolean
+ key_press_event (GtkWidget *widget, GdkEventKey *key, gpointer data)
+ {
+-  if (DOING_GDM_DEVELOPMENT && (key->keyval == GDK_Escape))
++  if (key->keyval == GDK_Escape)
+     {
++    if (DOING_GDM_DEVELOPMENT)
+       gtk_main_quit ();
++    else
++    {
++      printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_LOGIN); 
++      fflush (stdout);
++    }
+       
+       return TRUE;
+     }
+@@ -1132,7 +1138,6 @@
+ 
+   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ 
+-  if G_UNLIKELY (DOING_GDM_DEVELOPMENT)
+     g_signal_connect (G_OBJECT (window), "key_press_event",
+ 		      G_CALLBACK (key_press_event), NULL);
+   


Index: gdm.spec
===================================================================
RCS file: /cvs/dist/rpms/gdm/devel/gdm.spec,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -r1.67 -r1.68
--- gdm.spec	14 Apr 2005 19:36:47 -0000	1.67
+++ gdm.spec	15 Apr 2005 16:05:29 -0000	1.68
@@ -275,6 +275,7 @@
 %changelog
 * Thu Apr 14 2005 Matthias Clasen <mclasen at redhat.com> 1:2.6.0.8-4
 - Don't do early-login if firstboot is going to run
+- Make early-login work with timed and automatic logins
 
 * Wed Apr 13 2005 Ray Strode <rstrode at redhat.com> 1:2.6.0.8-3
 - Don't hard code dpi setting to 96.0, but instead look at




More information about the fedora-cvs-commits mailing list