gnome-session r4733 - in trunk: . gnome-session



Author: lucasr
Date: Thu Jun 12 23:51:46 2008
New Revision: 4733
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4733&view=rev

Log:
2008-06-13  Lucas Rocha  <lucasr gnome org>

	Avoid spamming the console with error messages when GDM is not
	available. Check availability of GDM to know if we can add "Switch
	User" button to logout dialog. #526199, Andrew Nelless. Patch by
	Andrew Nelless.

	* gnome-session/gdm.[ch] (gdm_is_available,
	gdm_init_protocol_connection): check existence of socket file before
	trying to connect in order to avoid spamming console with error
	messages when GDM is not available.
	* gnome-session/logout-dialog.c (gsm_get_logout_dialog): check is GDM
	is available before adding "Switch User" button to logout dialog.


Modified:
   trunk/ChangeLog
   trunk/gnome-session/gdm.c
   trunk/gnome-session/gdm.h
   trunk/gnome-session/logout-dialog.c

Modified: trunk/gnome-session/gdm.c
==============================================================================
--- trunk/gnome-session/gdm.c	(original)
+++ trunk/gnome-session/gdm.c	Thu Jun 12 23:51:46 2008
@@ -250,6 +250,13 @@
 
   g_assert (data->fd <= 0);
 
+  if (g_file_test (GDM_PROTOCOL_SOCKET_PATH, G_FILE_TEST_EXISTS))
+    strcpy (addr.sun_path, GDM_PROTOCOL_SOCKET_PATH);
+  else if (g_file_test ("/tmp/.gdm_socket", G_FILE_TEST_EXISTS))
+    strcpy (addr.sun_path, "/tmp/.gdm_socket");
+  else
+    return FALSE;
+ 
   data->fd = socket (AF_UNIX, SOCK_STREAM, 0);
 
   if (data->fd < 0) 
@@ -262,11 +269,6 @@
       return FALSE;
     }
   
-  if (g_file_test (GDM_PROTOCOL_SOCKET_PATH, G_FILE_TEST_EXISTS))
-    strcpy (addr.sun_path, GDM_PROTOCOL_SOCKET_PATH);
-  else
-    strcpy (addr.sun_path, "/tmp/.gdm_socket");
-  
   addr.sun_family = AF_UNIX;
 
   if (connect (data->fd, (struct sockaddr *) &addr, sizeof (addr)) < 0) 
@@ -380,6 +382,17 @@
 }
 
 gboolean
+gdm_is_available (void)
+{
+  if (!gdm_init_protocol_connection (&gdm_protocol_data))
+    return FALSE;
+  
+  gdm_shutdown_protocol_connection (&gdm_protocol_data);
+
+  return TRUE;
+}
+
+gboolean
 gdm_supports_logout_action (GdmLogoutAction action)
 {
   gdm_update_logout_actions (&gdm_protocol_data);

Modified: trunk/gnome-session/gdm.h
==============================================================================
--- trunk/gnome-session/gdm.h	(original)
+++ trunk/gnome-session/gdm.h	Thu Jun 12 23:51:46 2008
@@ -39,6 +39,8 @@
   GDM_LOGOUT_ACTION_SUSPEND  = 1 << 2
 } GdmLogoutAction;
 
+gboolean         gdm_is_available            (void);
+
 void             gdm_new_login               (void);
 
 void             gdm_set_logout_action       (GdmLogoutAction action);

Modified: trunk/gnome-session/logout-dialog.c
==============================================================================
--- trunk/gnome-session/logout-dialog.c	(original)
+++ trunk/gnome-session/logout-dialog.c	Thu Jun 12 23:51:46 2008
@@ -357,11 +357,11 @@
       primary_text = N_("Log out of this system now?");
 
       logout_dialog->priv->default_response = GSM_LOGOUT_RESPONSE_LOGOUT;
-      
-      //FIXME is gdm running?
-      gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
-                             _("_Switch User"),
-                             GSM_LOGOUT_RESPONSE_SWITCH_USER);
+
+      if (gdm_is_available ())
+        gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
+                               _("_Switch User"),
+                               GSM_LOGOUT_RESPONSE_SWITCH_USER);
 
       gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
                              GTK_STOCK_CANCEL,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]