diff options
Diffstat (limited to 'gui/simple-greeter/gdm-greeter-session.c')
-rw-r--r-- | gui/simple-greeter/gdm-greeter-session.c | 97 |
1 files changed, 57 insertions, 40 deletions
diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c index d939f472..60acc45b 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -75,7 +75,7 @@ on_info (GdmGreeterClient *client, { g_debug ("GdmGreeterSession: Info: %s", text); - gdm_greeter_login_window_info (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text); + gdm_greeter_login_window_info (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name, text); } static void @@ -86,7 +86,17 @@ on_problem (GdmGreeterClient *client, { g_debug ("GdmGreeterSession: Problem: %s", text); - gdm_greeter_login_window_problem (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text); + gdm_greeter_login_window_problem (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name, text); +} + +static void +on_service_unavailable (GdmGreeterClient *client, + const char *service_name, + GdmGreeterSession *session) +{ + g_debug ("GdmGreeterSession: Service Unavailable: %s", service_name); + + gdm_greeter_login_window_service_unavailable (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name); } static void @@ -96,40 +106,30 @@ on_ready (GdmGreeterClient *client, { g_debug ("GdmGreeterSession: Ready"); - gdm_greeter_login_window_ready (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); + gdm_greeter_login_window_ready (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), + service_name); } static void -on_reset (GdmGreeterClient *client, - GdmGreeterSession *session) +on_conversation_stopped (GdmGreeterClient *client, + const char *service_name, + GdmGreeterSession *session) { - g_debug ("GdmGreeterSession: Reset"); - - session->priv->num_tries = 0; + g_debug ("GdmGreeterSession: Conversation '%s' stopped", service_name); - gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); + gdm_greeter_login_window_conversation_stopped (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), + service_name); } static void -on_authentication_failed (GdmGreeterClient *client, - GdmGreeterSession *session) +on_reset (GdmGreeterClient *client, + GdmGreeterSession *session) { - g_debug ("GdmGreeterSession: Authentication failed"); - - session->priv->num_tries++; - - if (session->priv->num_tries < MAX_LOGIN_TRIES) { - g_debug ("GdmGreeterSession: Retrying login (%d)", - session->priv->num_tries); + g_debug ("GdmGreeterSession: Reset"); - gdm_greeter_login_window_authentication_failed (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); - } else { - g_debug ("GdmGreeterSession: Maximum number of login tries exceeded (%d) - resetting", - session->priv->num_tries - 1); - session->priv->num_tries = 0; + session->priv->num_tries = 0; - gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); - } + gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); } static void @@ -181,10 +181,11 @@ on_timed_login_requested (GdmGreeterClient *client, static void on_session_opened (GdmGreeterClient *client, + const char *service_name, GdmGreeterSession *session) { g_debug ("GdmGreeterSession: session opened"); - gdm_greeter_login_window_session_opened (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); + gdm_greeter_login_window_session_opened (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name); } static void @@ -195,7 +196,7 @@ on_info_query (GdmGreeterClient *client, { g_debug ("GdmGreeterSession: Info query: %s", text); - gdm_greeter_login_window_info_query (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text); + gdm_greeter_login_window_info_query (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name, text); } static void @@ -206,10 +207,18 @@ on_secret_info_query (GdmGreeterClient *client, { g_debug ("GdmGreeterSession: Secret info query: %s", text); - gdm_greeter_login_window_secret_info_query (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text); + gdm_greeter_login_window_secret_info_query (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), service_name, text); } static void +on_start_conversation (GdmGreeterLoginWindow *login_window, + const char *service_name, + GdmGreeterSession *session) +{ + gdm_greeter_client_call_start_conversation (session->priv->client, + service_name); +} +static void on_begin_auto_login (GdmGreeterLoginWindow *login_window, const char *username, GdmGreeterSession *session) @@ -220,29 +229,32 @@ on_begin_auto_login (GdmGreeterLoginWindow *login_window, static void on_begin_verification (GdmGreeterLoginWindow *login_window, + const char *service_name, GdmGreeterSession *session) { gdm_greeter_client_call_begin_verification (session->priv->client, - "gdm"); + service_name); } static void on_begin_verification_for_user (GdmGreeterLoginWindow *login_window, + const char *service_name, const char *username, GdmGreeterSession *session) { gdm_greeter_client_call_begin_verification_for_user (session->priv->client, - "gdm", + service_name, username); } static void on_query_answer (GdmGreeterLoginWindow *login_window, + const char *service_name, const char *text, GdmGreeterSession *session) { gdm_greeter_client_call_answer_query (session->priv->client, - "gdm", + service_name, text); } @@ -270,7 +282,6 @@ on_cancelled (GdmGreeterLoginWindow *login_window, GdmGreeterSession *session) { gdm_greeter_client_call_cancel (session->priv->client); - gdm_greeter_client_call_start_conversation (session->priv->client, "gdm"); } static void @@ -281,9 +292,10 @@ on_disconnected (GdmGreeterSession *session) static void on_start_session (GdmGreeterLoginWindow *login_window, + const char *service_name, GdmGreeterSession *session) { - gdm_greeter_client_call_start_session_when_ready (session->priv->client, "gdm", TRUE); + gdm_greeter_client_call_start_session_when_ready (session->priv->client, service_name, TRUE); } static int @@ -368,7 +380,10 @@ toggle_login_window (GdmGreeterSession *session, is_local = gdm_greeter_client_get_display_is_local (session->priv->client); g_debug ("GdmGreeterSession: Starting a login window local:%d", is_local); session->priv->login_window = gdm_greeter_login_window_new (is_local); - + g_signal_connect (session->priv->login_window, + "start-conversation", + G_CALLBACK (on_start_conversation), + session); g_signal_connect (session->priv->login_window, "begin-auto-login", G_CALLBACK (on_begin_auto_login), @@ -424,8 +439,6 @@ gdm_greeter_session_start (GdmGreeterSession *session, toggle_panel (session, TRUE); toggle_login_window (session, TRUE); - gdm_greeter_client_call_start_conversation (session->priv->client, "gdm"); - gdm_profile_end (NULL); return res; @@ -559,16 +572,20 @@ gdm_greeter_session_init (GdmGreeterSession *session) G_CALLBACK (on_problem), session); g_signal_connect (session->priv->client, + "service-unavailable", + G_CALLBACK (on_service_unavailable), + session); + g_signal_connect (session->priv->client, "ready", G_CALLBACK (on_ready), session); g_signal_connect (session->priv->client, - "reset", - G_CALLBACK (on_reset), + "conversation-stopped", + G_CALLBACK (on_conversation_stopped), session); g_signal_connect (session->priv->client, - "authentication-failed", - G_CALLBACK (on_authentication_failed), + "reset", + G_CALLBACK (on_reset), session); g_signal_connect (session->priv->client, "selected-user-changed", |