1
From b0997be9b4101fda30d621326b43e2ccf89ce4b1 Mon Sep 17 00:00:00 2001
2
From: Brian Cameron <Brian.Cameron@sun.com>
3
Date: Wed, 21 Apr 2010 21:57:20 +0000
4
Subject: Ensure users are loaded before starting the timed login clock. Fixes
8
diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
9
index 25af747..0c7a936 100644
10
--- a/gui/simple-greeter/gdm-greeter-login-window.c
11
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
12
@@ -109,6 +109,7 @@ struct GdmGreeterLoginWindowPrivate
16
+ gboolean timed_login_already_enabled;
17
gboolean timed_login_enabled;
18
guint timed_login_delay;
19
char *timed_login_username;
20
@@ -624,34 +625,55 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window,
25
+handle_request_timed_login (GdmGreeterLoginWindow *login_window)
27
+ if (login_window->priv->dialog_mode != MODE_SELECTION) {
28
+ reset_dialog (login_window);
30
+ gdm_user_chooser_widget_set_show_user_auto (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser), TRUE);
32
+ if (!login_window->priv->timed_login_already_enabled) {
33
+ gdm_user_chooser_widget_set_chosen_user_name (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser),
34
+ GDM_USER_CHOOSER_USER_AUTO);
39
+on_request_timed_login_after_users_loaded (GdmUserChooserWidget *user_chooser,
40
+ GdmGreeterLoginWindow *login_window)
42
+ g_debug ("Users now loaded, handling timed login request");
43
+ handle_request_timed_login (login_window);
47
gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
51
- static gboolean timed_login_already_enabled;
53
g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window));
55
g_debug ("GdmGreeterLoginWindow: requested automatic login for user '%s' in %d seconds", username, delay);
57
if (login_window->priv->timed_login_username != NULL) {
58
- timed_login_already_enabled = TRUE;
59
+ login_window->priv->timed_login_already_enabled = TRUE;
60
g_free (login_window->priv->timed_login_username);
62
- timed_login_already_enabled = FALSE;
63
+ login_window->priv->timed_login_already_enabled = FALSE;
65
login_window->priv->timed_login_username = g_strdup (username);
66
login_window->priv->timed_login_delay = delay;
68
- if (login_window->priv->dialog_mode != MODE_SELECTION) {
69
- reset_dialog (login_window);
71
- gdm_user_chooser_widget_set_show_user_auto (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser), TRUE);
73
- if (!timed_login_already_enabled) {
74
- gdm_user_chooser_widget_set_chosen_user_name (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser),
75
- GDM_USER_CHOOSER_USER_AUTO);
76
+ if (login_window->priv->user_chooser_loaded) {
77
+ g_debug ("Handling timed login request since users are already loaded.");
78
+ handle_request_timed_login (login_window);
80
+ g_debug ("Waiting to handle timed login request until users are loaded.");
81
+ g_signal_connect (login_window->priv->user_chooser,
83
+ G_CALLBACK (on_request_timed_login_after_users_loaded),