gdm r6582 - in trunk: . daemon



Author: mccann
Date: Fri Oct 24 01:42:04 2008
New Revision: 6582
URL: http://svn.gnome.org/viewvc/gdm?rev=6582&view=rev

Log:
2008-10-23  William Jon McCann  <jmccann redhat com>

	* daemon/gdm-display.c (gdm_display_real_get_timed_login_details),
	(gdm_display_get_timed_login_details), (gdm_display_real_unmanage),
	(gdm_display_class_init):
	* daemon/gdm-display.h:
	* daemon/gdm-display.xml:
	* daemon/gdm-simple-slave.c (greeter_reset_timeout),
	(on_session_setup_failed), (on_session_authentication_failed),
	(on_session_authorized), (on_session_authorization_failed),
	(stop_greeter), (start_session_timeout), (on_session_accredited),
	(on_session_accreditation_failed), (on_session_info),
	(on_session_opened), (on_session_selected_user_changed),
	(on_default_language_name_changed),
	(on_default_layout_name_changed),
	(on_default_session_name_changed), (start_greeter),
	(idle_connect_to_display), (gdm_simple_slave_stop):
	* daemon/gdm-slave.c (gdm_slave_get_timed_login_details):
	* daemon/gdm-slave.h:
	* daemon/gdm-static-display.c (gdm_static_display_unmanage),
	(gdm_static_display_get_timed_login_details),
	(gdm_static_display_class_init), (gdm_static_display_init):
	* daemon/gdm-transient-display.c
	(gdm_transient_display_get_timed_login_details),
	(gdm_transient_display_class_init):
	* daemon/gdm-xdmcp-display.c
	(gdm_xdmcp_display_get_timed_login_details),
	(gdm_xdmcp_display_class_init):
	Add support for a real automatic login.  Make
	automatic and timed login only work the first time a display
	is managed.  Also prevent automatic and timed login
	from working on transient and xdmcp displays.



Modified:
   trunk/ChangeLog
   trunk/daemon/gdm-display.c
   trunk/daemon/gdm-display.h
   trunk/daemon/gdm-display.xml
   trunk/daemon/gdm-simple-slave.c
   trunk/daemon/gdm-slave.c
   trunk/daemon/gdm-slave.h
   trunk/daemon/gdm-static-display.c
   trunk/daemon/gdm-transient-display.c
   trunk/daemon/gdm-xdmcp-display.c

Modified: trunk/daemon/gdm-display.c
==============================================================================
--- trunk/daemon/gdm-display.c	(original)
+++ trunk/daemon/gdm-display.c	Fri Oct 24 01:42:04 2008
@@ -37,6 +37,9 @@
 #include "gdm-display-glue.h"
 #include "gdm-display-access-file.h"
 
+#include "gdm-settings-direct.h"
+#include "gdm-settings-keys.h"
+
 #include "gdm-slave-proxy.h"
 
 static guint32 display_serial = 1;
@@ -299,6 +302,90 @@
         return ret;
 }
 
+static void
+gdm_display_real_get_timed_login_details (GdmDisplay *display,
+                                          gboolean   *enabledp,
+                                          char      **usernamep,
+                                          int        *delayp)
+{
+        gboolean res;
+        gboolean enabled;
+        int      delay;
+        char    *username;
+
+        enabled = FALSE;
+        username = NULL;
+        delay = 0;
+
+        res = gdm_settings_direct_get_boolean (GDM_KEY_AUTO_LOGIN_ENABLE, &enabled);
+        if (enabled) {
+            res = gdm_settings_direct_get_string (GDM_KEY_AUTO_LOGIN_USER, &username);
+        }
+
+        if (enabled && username != NULL && username[0] != '\0') {
+                goto out;
+        }
+
+        g_free (username);
+        username = NULL;
+        enabled = FALSE;
+
+        res = gdm_settings_direct_get_boolean (GDM_KEY_TIMED_LOGIN_ENABLE, &enabled);
+        if (! enabled) {
+                goto out;
+        }
+
+        res = gdm_settings_direct_get_string (GDM_KEY_TIMED_LOGIN_USER, &username);
+        if (username == NULL || username[0] == '\0') {
+                enabled = FALSE;
+                g_free (username);
+                username = NULL;
+                /* FIXME: check if a valid username? */
+                goto out;
+        }
+
+        delay = 0;
+        res = gdm_settings_direct_get_int (GDM_KEY_TIMED_LOGIN_DELAY, &delay);
+
+        if (delay <= 0) {
+                /* we don't allow the timed login to have a zero delay */
+                delay = 10;
+        }
+
+ out:
+        if (enabledp != NULL) {
+                *enabledp = enabled;
+        }
+        if (usernamep != NULL) {
+                *usernamep = username;
+        } else {
+                g_free (username);
+        }
+        if (delayp != NULL) {
+                *delayp = delay;
+        }
+}
+
+gboolean
+gdm_display_get_timed_login_details (GdmDisplay *display,
+                                     gboolean   *enabled,
+                                     char      **username,
+                                     int        *delay,
+                                     GError    **error)
+{
+        g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+
+        GDM_DISPLAY_GET_CLASS (display)->get_timed_login_details (display, enabled, username, delay);
+
+        g_debug ("GdmSlave: Got timed login details for display %s: %d '%s' %d",
+                 display->priv->x11_display_name,
+                 *enabled,
+                 *username,
+                 *delay);
+
+        return TRUE;
+}
+
 static gboolean
 gdm_display_real_remove_user_authorization (GdmDisplay *display,
                                             const char *username,
@@ -579,7 +666,7 @@
         }
 
         elapsed = g_timer_elapsed (display->priv->slave_timer, NULL);
-        if (elapsed < 10) {
+        if (elapsed < 3) {
                 g_warning ("GdmDisplay: display lasted %lf seconds", elapsed);
                 _gdm_display_set_status (display, GDM_DISPLAY_FAILED);
         } else {
@@ -897,6 +984,7 @@
         klass->add_user_authorization = gdm_display_real_add_user_authorization;
         klass->remove_user_authorization = gdm_display_real_remove_user_authorization;
         klass->set_slave_bus_name = gdm_display_real_set_slave_bus_name;
+        klass->get_timed_login_details = gdm_display_real_get_timed_login_details;
         klass->manage = gdm_display_real_manage;
         klass->finish = gdm_display_real_finish;
         klass->unmanage = gdm_display_real_unmanage;

Modified: trunk/daemon/gdm-display.h
==============================================================================
--- trunk/daemon/gdm-display.h	(original)
+++ trunk/daemon/gdm-display.h	Fri Oct 24 01:42:04 2008
@@ -68,6 +68,10 @@
         gboolean (*manage)                    (GdmDisplay *display);
         gboolean (*finish)                    (GdmDisplay *display);
         gboolean (*unmanage)                  (GdmDisplay *display);
+        void     (*get_timed_login_details)   (GdmDisplay *display,
+                                               gboolean   *enabled,
+                                               char      **username,
+                                               int        *delay);
 } GdmDisplayClass;
 
 typedef enum
@@ -110,6 +114,11 @@
 gboolean            gdm_display_is_local                       (GdmDisplay *display,
                                                                 gboolean   *local,
                                                                 GError    **error);
+gboolean            gdm_display_get_timed_login_details        (GdmDisplay *display,
+                                                                gboolean   *enabled,
+                                                                char      **username,
+                                                                int        *delay,
+                                                                GError    **error);
 
 /* exported but protected */
 gboolean            gdm_display_get_x11_cookie                 (GdmDisplay *display,

Modified: trunk/daemon/gdm-display.xml
==============================================================================
--- trunk/daemon/gdm-display.xml	(original)
+++ trunk/daemon/gdm-display.xml	Fri Oct 24 01:42:04 2008
@@ -35,5 +35,10 @@
     <method name="SetSlaveBusName">
       <arg name="name" direction="in" type="s"/>
     </method>
+    <method name="GetTimedLoginDetails">
+      <arg name="enabled" direction="out" type="b"/>
+      <arg name="username" direction="out" type="s"/>
+      <arg name="delay" direction="out" type="i"/>
+    </method>
   </interface>
 </node>

Modified: trunk/daemon/gdm-simple-slave.c
==============================================================================
--- trunk/daemon/gdm-simple-slave.c	(original)
+++ trunk/daemon/gdm-simple-slave.c	Fri Oct 24 01:42:04 2008
@@ -74,9 +74,10 @@
         guint              connection_attempts;
 
         GdmServer         *server;
+        GdmSessionDirect  *session;
+
         GdmGreeterServer  *greeter_server;
         GdmGreeterSession *greeter;
-        GdmSessionDirect  *session;
 
         guint              start_session_when_ready : 1;
         guint              waiting_to_start_session : 1;
@@ -93,6 +94,7 @@
 G_DEFINE_TYPE (GdmSimpleSlave, gdm_simple_slave, GDM_TYPE_SLAVE)
 
 static void create_new_session (GdmSimpleSlave *slave);
+static void start_greeter      (GdmSimpleSlave *slave);
 
 static void
 on_session_started (GdmSession       *session,
@@ -176,8 +178,14 @@
 greeter_reset_timeout (GdmSimpleSlave *slave)
 {
         g_debug ("GdmSimpleSlave: resetting greeter");
-        gdm_greeter_server_reset (slave->priv->greeter_server);
-        reset_session (slave);
+
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_reset (slave->priv->greeter_server);
+                reset_session (slave);
+        } else {
+                start_greeter (slave);
+                create_new_session (slave);
+        }
         slave->priv->greeter_reset_id = 0;
         return FALSE;
 }
@@ -204,7 +212,10 @@
                          const char     *message,
                          GdmSimpleSlave *slave)
 {
-        gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to initialize login system"));
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_problem (slave->priv->greeter_server,
+                                            _("Unable to initialize login system"));
+        }
 
         destroy_session (slave);
         queue_greeter_reset (slave);
@@ -237,7 +248,10 @@
                                   const char     *message,
                                   GdmSimpleSlave *slave)
 {
-        gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to authenticate user"));
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_problem (slave->priv->greeter_server,
+                                            _("Unable to authenticate user"));
+        }
         destroy_session (slave);
         queue_greeter_reset (slave);
 }
@@ -274,8 +288,13 @@
 on_session_authorized (GdmSession     *session,
                        GdmSimpleSlave *slave)
 {
-        gdm_greeter_server_user_authorized (slave->priv->greeter_server);
-        gdm_simple_slave_accredit_when_ready (slave);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_user_authorized (slave->priv->greeter_server);
+                gdm_simple_slave_accredit_when_ready (slave);
+        } else {
+                slave->priv->start_session_when_ready = TRUE;
+                gdm_simple_slave_accredit_when_ready (slave);
+        }
 }
 
 static void
@@ -283,7 +302,10 @@
                                  const char     *message,
                                  GdmSimpleSlave *slave)
 {
-        gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to authorize user"));
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_problem (slave->priv->greeter_server,
+                                            _("Unable to authorize user"));
+        }
 
         destroy_session (slave);
         queue_greeter_reset (slave);
@@ -306,6 +328,25 @@
         return res;
 }
 
+static void
+stop_greeter (GdmSimpleSlave *slave)
+{
+        g_debug ("GdmSimpleSlave: Stopping greeter");
+
+        if (slave->priv->greeter == NULL) {
+                g_debug ("GdmSimpleSlave: No greeter running");
+                return;
+        }
+
+        /* Run the PostLogin script. gdmslave suspends until script has terminated */
+        gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/PostLogin", GDM_USERNAME);
+
+        gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
+        gdm_greeter_server_stop (slave->priv->greeter_server);
+
+        g_object_unref (slave->priv->greeter);
+        slave->priv->greeter = NULL;
+}
 
 static gboolean
 start_session_timeout (GdmSimpleSlave *slave)
@@ -330,8 +371,7 @@
                 goto out;
         }
 
-        gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
-        gdm_greeter_server_stop (slave->priv->greeter_server);
+        stop_greeter (slave);
 
         auth_file = NULL;
         add_user_authorization (slave, &auth_file);
@@ -365,9 +405,6 @@
                        GdmSimpleSlave *slave)
 {
         queue_start_session (slave);
-
-        /* Run the PostLogin script. gdmslave suspends until script has terminated */
-        gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/PostLogin", GDM_USERNAME);
 }
 
 static void
@@ -384,7 +421,10 @@
         /* If we switched to another session we don't care if
            accreditation fails */
         if (! migrated) {
-                gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable establish credentials"));
+                if (slave->priv->greeter_server != NULL) {
+                        gdm_greeter_server_problem (slave->priv->greeter_server,
+                                                    _("Unable establish credentials"));
+                }
         }
 
         /* We don't stop the slave here after migrating because
@@ -402,7 +442,9 @@
                  GdmSimpleSlave *slave)
 {
         g_debug ("GdmSimpleSlave: Info: %s", text);
-        gdm_greeter_server_info (slave->priv->greeter_server, text);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_info (slave->priv->greeter_server, text);
+        }
 }
 
 static void
@@ -433,64 +475,39 @@
         gdm_greeter_server_secret_info_query (slave->priv->greeter_server, text);
 }
 
-static gboolean
-get_timed_login_details (GdmSimpleSlave  *slave,
-                         char           **username,
-                         int             *delay)
-{
-        gboolean enabled;
-        gboolean res;
-
-        enabled = FALSE;
-        res = gdm_settings_client_get_boolean (GDM_KEY_AUTO_LOGIN_ENABLE, &enabled);
-        if (enabled) {
-
-            *username = NULL;
-            res = gdm_settings_client_get_string (GDM_KEY_AUTO_LOGIN_USER, username);
-        }
-
-        if (enabled && *username != NULL)
-        {
-            *delay = 0;
-            return TRUE;
-        }
-
-        *username = NULL;
-        enabled = FALSE;
-        res = gdm_settings_client_get_boolean (GDM_KEY_TIMED_LOGIN_ENABLE, &enabled);
-        if (! enabled) {
-                return FALSE;
-        }
-
-        res = gdm_settings_client_get_string (GDM_KEY_TIMED_LOGIN_USER, username);
-
-        if (username == NULL) {
-                return FALSE;
-        }
-
-        res = gdm_settings_client_get_int (GDM_KEY_TIMED_LOGIN_DELAY, delay);
-
-        return TRUE;
-}
-
 static void
 on_session_opened (GdmSession     *session,
                    GdmSimpleSlave *slave)
 {
         gboolean res;
+        gboolean enabled;
         char    *username;
         int      delay;
 
         g_debug ("GdmSimpleSlave: session opened");
-        res = gdm_greeter_server_ready (slave->priv->greeter_server);
-        if (! res) {
-                g_warning ("Unable to send ready");
+        if (slave->priv->greeter_server != NULL) {
+                res = gdm_greeter_server_ready (slave->priv->greeter_server);
+                if (! res) {
+                        g_warning ("Unable to send ready");
+                }
         }
 
-        if (get_timed_login_details (slave, &username, &delay)) {
+        enabled = FALSE;
+        gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, &username, &delay);
+        if (! enabled) {
+                return;
+        }
+
+        if (slave->priv->greeter_server != NULL) {
                 gdm_greeter_server_request_timed_login (slave->priv->greeter_server, username, delay);
-                g_free (username);
+        } else {
+                g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username);
+                gdm_session_setup_for_user (GDM_SESSION (slave->priv->session),
+                                            "gdm-autologin",
+                                            username);
         }
+
+        g_free (username);
 }
 
 static void
@@ -500,7 +517,9 @@
 {
         g_debug ("GdmSimpleSlave: Selected user changed: %s", text);
 
-        gdm_greeter_server_selected_user_changed (slave->priv->greeter_server, text);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_selected_user_changed (slave->priv->greeter_server, text);
+        }
 }
 
 static void
@@ -510,7 +529,9 @@
 {
         g_debug ("GdmSimpleSlave: Default language name changed: %s", text);
 
-        gdm_greeter_server_default_language_name_changed (slave->priv->greeter_server, text);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_default_language_name_changed (slave->priv->greeter_server, text);
+        }
 }
 
 static void
@@ -520,7 +541,9 @@
 {
         g_debug ("GdmSimpleSlave: Default layout name changed: %s", text);
 
-        gdm_greeter_server_default_layout_name_changed (slave->priv->greeter_server, text);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_default_layout_name_changed (slave->priv->greeter_server, text);
+        }
 }
 
 static void
@@ -530,7 +553,9 @@
 {
         g_debug ("GdmSimpleSlave: Default session name changed: %s", text);
 
-        gdm_greeter_server_default_session_name_changed (slave->priv->greeter_server, text);
+        if (slave->priv->greeter_server != NULL) {
+                gdm_greeter_server_default_session_name_changed (slave->priv->greeter_server, text);
+        }
 }
 
 static void
@@ -828,7 +853,7 @@
 }
 
 static void
-run_greeter (GdmSimpleSlave *slave)
+start_greeter (GdmSimpleSlave *slave)
 {
         gboolean       display_is_local;
         char          *display_id;
@@ -871,8 +896,6 @@
         /* Run the init script. gdmslave suspends until script has terminated */
         gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/Init", GDM_USERNAME);
 
-        create_new_session (slave);
-
         slave->priv->greeter_server = gdm_greeter_server_new (display_id);
         g_signal_connect (slave->priv->greeter_server,
                           "begin-auto-login",
@@ -971,10 +994,22 @@
 
         res = gdm_slave_connect_to_x11_display (GDM_SLAVE (slave));
         if (res) {
+                gboolean enabled;
+                int      delay;
+
                 /* FIXME: handle wait-for-go */
 
                 setup_server (slave);
-                run_greeter (slave);
+
+                delay = 0;
+                enabled = FALSE;
+                gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, NULL, &delay);
+                if (! enabled || delay > 0) {
+                        start_greeter (slave);
+                        create_new_session (slave);
+                } else {
+                        reset_session (slave);
+                }
         } else {
                 if (slave->priv->connection_attempts >= MAX_CONNECT_ATTEMPTS) {
                         g_warning ("Unable to connect to display after %d tries - bailing out", slave->priv->connection_attempts);
@@ -1099,9 +1134,7 @@
         GDM_SLAVE_CLASS (gdm_simple_slave_parent_class)->stop (slave);
 
         if (GDM_SIMPLE_SLAVE (slave)->priv->greeter != NULL) {
-                gdm_welcome_session_stop (GDM_WELCOME_SESSION (GDM_SIMPLE_SLAVE (slave)->priv->greeter));
-                g_object_unref (GDM_SIMPLE_SLAVE (slave)->priv->greeter);
-                GDM_SIMPLE_SLAVE (slave)->priv->greeter = NULL;
+                stop_greeter (GDM_SIMPLE_SLAVE (slave));
         }
 
         if (GDM_SIMPLE_SLAVE (slave)->priv->session != NULL) {

Modified: trunk/daemon/gdm-slave.c
==============================================================================
--- trunk/daemon/gdm-slave.c	(original)
+++ trunk/daemon/gdm-slave.c	Fri Oct 24 01:42:04 2008
@@ -701,6 +701,60 @@
         return res;
 }
 
+gboolean
+gdm_slave_get_timed_login_details (GdmSlave   *slave,
+                                   gboolean   *enabledp,
+                                   char      **usernamep,
+                                   int        *delayp)
+{
+        GError  *error;
+        gboolean res;
+        gboolean enabled;
+        char    *username;
+        int      delay;
+
+        username = NULL;
+        enabled = FALSE;
+        delay = 0;
+
+        g_debug ("GdmSlave: Requesting timed login details");
+
+        error = NULL;
+        res = dbus_g_proxy_call (slave->priv->display_proxy,
+                                 "GetTimedLoginDetails",
+                                 &error,
+                                 G_TYPE_INVALID,
+                                 G_TYPE_BOOLEAN, &enabled,
+                                 G_TYPE_STRING, &username,
+                                 G_TYPE_INT, &delay,
+                                 G_TYPE_INVALID);
+
+        if (! res) {
+                if (error != NULL) {
+                        g_warning ("Failed to get timed login details: %s", error->message);
+                        g_error_free (error);
+                } else {
+                        g_warning ("Failed to get timed login details");
+                }
+        } else {
+                g_debug ("GdmSlave: Got timed login details: %d %s %d", enabled, username, delay);
+        }
+
+        if (usernamep != NULL) {
+                *usernamep = username;
+        } else {
+                g_free (username);
+        }
+        if (enabledp != NULL) {
+                *enabledp = enabled;
+        }
+        if (delayp != NULL) {
+                *delayp = delay;
+        }
+
+        return res;
+}
+
 static gboolean
 _get_uid_and_gid_for_user (const char *username,
                            uid_t      *uid,

Modified: trunk/daemon/gdm-slave.h
==============================================================================
--- trunk/daemon/gdm-slave.h	(original)
+++ trunk/daemon/gdm-slave.h	Fri Oct 24 01:42:04 2008
@@ -60,6 +60,11 @@
 char *              gdm_slave_get_primary_session_id_for_user (GdmSlave   *slave,
                                                                const char *username);
 
+gboolean            gdm_slave_get_timed_login_details (GdmSlave  *slave,
+                                                       gboolean  *enabled,
+                                                       char     **username,
+                                                       int       *delay);
+
 gboolean            gdm_slave_add_user_authorization (GdmSlave   *slave,
                                                       const char *username,
                                                       char      **filename);

Modified: trunk/daemon/gdm-static-display.c
==============================================================================
--- trunk/daemon/gdm-static-display.c	(original)
+++ trunk/daemon/gdm-static-display.c	Fri Oct 24 01:42:04 2008
@@ -45,7 +45,7 @@
 
 struct GdmStaticDisplayPrivate
 {
-        gpointer dummy;
+        gboolean enable_timed_login;
 };
 
 enum {
@@ -121,6 +121,9 @@
 {
         g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
 
+        /* Only allow timed/automatic login once */
+        GDM_STATIC_DISPLAY (display)->priv->enable_timed_login = FALSE;
+
         GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->unmanage (display);
 
         return TRUE;
@@ -153,6 +156,21 @@
 }
 
 static void
+gdm_static_display_get_timed_login_details (GdmDisplay *display,
+                                            gboolean   *enabledp,
+                                            char      **usernamep,
+                                            int        *delayp)
+{
+        if (GDM_STATIC_DISPLAY (display)->priv->enable_timed_login) {
+                GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->get_timed_login_details (display, enabledp, usernamep, delayp);
+        } else {
+                *enabledp = FALSE;
+                *usernamep = g_strdup ("");
+                *delayp = 0;
+        }
+}
+
+static void
 gdm_static_display_class_init (GdmStaticDisplayClass *klass)
 {
         GObjectClass    *object_class = G_OBJECT_CLASS (klass);
@@ -168,6 +186,7 @@
         display_class->manage = gdm_static_display_manage;
         display_class->finish = gdm_static_display_finish;
         display_class->unmanage = gdm_static_display_unmanage;
+        display_class->get_timed_login_details = gdm_static_display_get_timed_login_details;
 
         g_type_class_add_private (klass, sizeof (GdmStaticDisplayPrivate));
 
@@ -179,6 +198,8 @@
 {
 
         static_display->priv = GDM_STATIC_DISPLAY_GET_PRIVATE (static_display);
+
+        static_display->priv->enable_timed_login = TRUE;
 }
 
 static void

Modified: trunk/daemon/gdm-transient-display.c
==============================================================================
--- trunk/daemon/gdm-transient-display.c	(original)
+++ trunk/daemon/gdm-transient-display.c	Fri Oct 24 01:42:04 2008
@@ -145,6 +145,17 @@
 }
 
 static void
+gdm_transient_display_get_timed_login_details (GdmDisplay *display,
+                                               gboolean   *enabledp,
+                                               char      **usernamep,
+                                               int        *delayp)
+{
+        *enabledp = FALSE;
+        *usernamep = g_strdup ("");
+        *delayp = 0;
+}
+
+static void
 gdm_transient_display_class_init (GdmTransientDisplayClass *klass)
 {
         GObjectClass    *object_class = G_OBJECT_CLASS (klass);
@@ -160,6 +171,7 @@
         display_class->manage = gdm_transient_display_manage;
         display_class->finish = gdm_transient_display_finish;
         display_class->unmanage = gdm_transient_display_unmanage;
+        display_class->get_timed_login_details = gdm_transient_display_get_timed_login_details;
 
         g_type_class_add_private (klass, sizeof (GdmTransientDisplayPrivate));
 

Modified: trunk/daemon/gdm-xdmcp-display.c
==============================================================================
--- trunk/daemon/gdm-xdmcp-display.c	(original)
+++ trunk/daemon/gdm-xdmcp-display.c	Fri Oct 24 01:42:04 2008
@@ -182,6 +182,17 @@
 }
 
 static void
+gdm_xdmcp_display_get_timed_login_details (GdmDisplay *display,
+                                           gboolean   *enabledp,
+                                           char      **usernamep,
+                                           int        *delayp)
+{
+        *enabledp = FALSE;
+        *usernamep = g_strdup ("");
+        *delayp = 0;
+}
+
+static void
 gdm_xdmcp_display_class_init (GdmXdmcpDisplayClass *klass)
 {
         GObjectClass    *object_class = G_OBJECT_CLASS (klass);
@@ -196,6 +207,7 @@
         display_class->remove_user_authorization = gdm_xdmcp_display_remove_user_authorization;
         display_class->manage = gdm_xdmcp_display_manage;
         display_class->unmanage = gdm_xdmcp_display_unmanage;
+        display_class->get_timed_login_details = gdm_xdmcp_display_get_timed_login_details;
 
         g_type_class_add_private (klass, sizeof (GdmXdmcpDisplayPrivate));
 



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