diff options
author | Ray Strode <rstrode@redhat.com> | 2011-05-18 16:11:32 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2011-05-19 11:53:16 -0400 |
commit | 29020f729640983f5604f90b2a8a792f26b1d33e (patch) | |
tree | 1ff1360acab2a4641a89cf96b205a2ba2fe451fb /gui | |
parent | 20ddf1aa6f455221c340d973f8e49d6a4e823147 (diff) | |
download | gdm-29020f729640983f5604f90b2a8a792f26b1d33e.tar.gz |
daemon,greeter: login after PAM has had time to talk to user
The greeter currently gives the go ahead for the session to start
as soon as the user has been authorized. Then the slave quickly
runs through the remaining hoops and the greeter gets promptly
killed.
This commit changes the logic so that the slave doesn't get the
go ahead to start the session until all the hoops have been
run through, and potential messages have been queued, and displayed.
https://bugzilla.gnome.org/show_bug.cgi?id=583856
Diffstat (limited to 'gui')
-rw-r--r-- | gui/simple-greeter/gdm-greeter-client.c | 18 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-client.h | 2 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-login-window.c | 4 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-login-window.h | 2 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-session.c | 12 |
5 files changed, 19 insertions, 19 deletions
diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c index 10ba2367..92622d49 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -70,7 +70,7 @@ enum { DEFAULT_LANGUAGE_NAME_CHANGED, DEFAULT_SESSION_NAME_CHANGED, TIMED_LOGIN_REQUESTED, - USER_AUTHORIZED, + SESSION_OPENED, LAST_SIGNAL }; @@ -190,11 +190,11 @@ on_timed_login_requested (GdmGreeterClient *client, } static void -on_user_authorized (GdmGreeterClient *client, - DBusMessage *message) +on_session_opened (GdmGreeterClient *client, + DBusMessage *message) { g_signal_emit (client, - gdm_greeter_client_signals[USER_AUTHORIZED], + gdm_greeter_client_signals[SESSION_OPENED], 0); } @@ -651,8 +651,8 @@ client_dbus_handle_message (DBusConnection *connection, on_default_session_name_changed (client, message); } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "TimedLoginRequested")) { on_timed_login_requested (client, message); - } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "UserAuthorized")) { - on_user_authorized (client, message); + } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "SessionOpened")) { + on_session_opened (client, message); } else { return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -941,11 +941,11 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass) G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); - gdm_greeter_client_signals[USER_AUTHORIZED] = - g_signal_new ("user-authorized", + gdm_greeter_client_signals[SESSION_OPENED] = + g_signal_new ("session-opened", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GdmGreeterClientClass, user_authorized), + G_STRUCT_OFFSET (GdmGreeterClientClass, session_opened), NULL, NULL, g_cclosure_marshal_VOID__VOID, diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h index 79380464..9e093cfc 100644 --- a/gui/simple-greeter/gdm-greeter-client.h +++ b/gui/simple-greeter/gdm-greeter-client.h @@ -68,7 +68,7 @@ typedef struct void (* timed_login_requested) (GdmGreeterClient *client, const char *username, int delay); - void (* user_authorized) (GdmGreeterClient *client); + void (* session_opened) (GdmGreeterClient *client); } GdmGreeterClientClass; #define GDM_GREETER_CLIENT_ERROR (gdm_greeter_client_error_quark ()) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c index 4b12582a..44e5fd12 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -932,11 +932,11 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, } void -gdm_greeter_login_window_user_authorized (GdmGreeterLoginWindow *login_window) +gdm_greeter_login_window_session_opened (GdmGreeterLoginWindow *login_window) { g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window)); - g_debug ("GdmGreeterLoginWindow: user now authorized"); + g_debug ("GdmGreeterLoginWindow: session now opened"); gdm_greeter_login_window_start_session_when_ready (login_window); } diff --git a/gui/simple-greeter/gdm-greeter-login-window.h b/gui/simple-greeter/gdm-greeter-login-window.h index c8b11679..f461c8a5 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.h +++ b/gui/simple-greeter/gdm-greeter-login-window.h @@ -83,7 +83,7 @@ void gdm_greeter_login_window_set_default_session_name (GdmGreete void gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window, const char *username, int delay); -void gdm_greeter_login_window_user_authorized (GdmGreeterLoginWindow *login_window); +void gdm_greeter_login_window_session_opened (GdmGreeterLoginWindow *login_window); G_END_DECLS diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c index 7be5acd7..05a5b533 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -177,11 +177,11 @@ on_timed_login_requested (GdmGreeterClient *client, } static void -on_user_authorized (GdmGreeterClient *client, - GdmGreeterSession *session) +on_session_opened (GdmGreeterClient *client, + GdmGreeterSession *session) { - g_debug ("GdmGreeterSession: user authorized"); - gdm_greeter_login_window_user_authorized (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); + g_debug ("GdmGreeterSession: session opened"); + gdm_greeter_login_window_session_opened (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); } static void @@ -584,8 +584,8 @@ gdm_greeter_session_init (GdmGreeterSession *session) G_CALLBACK (on_timed_login_requested), session); g_signal_connect (session->priv->client, - "user-authorized", - G_CALLBACK (on_user_authorized), + "session-opened", + G_CALLBACK (on_session_opened), session); /* We want to listen for panel mnemonics even if the |