gdm r6582 - in trunk: . daemon
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r6582 - in trunk: . daemon
- Date: Fri, 24 Oct 2008 01:42:04 +0000 (UTC)
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]