diff options
author | Ray Strode <rstrode@redhat.com> | 2009-01-16 13:01:48 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2011-06-13 20:33:47 -0400 |
commit | c48494034587fcea734a2fb69631590edd54dd15 (patch) | |
tree | c3b3a107bbc3fbeee52f846898cefe746b67782b /gui | |
parent | 8b597446d585cde5ad5826c200d4bb8eff1a75b9 (diff) | |
download | gdm-c48494034587fcea734a2fb69631590edd54dd15.tar.gz |
daemon,greeter: Make greeter/autologin session initiate PAM conversation
Now the greeter (and also the autologin code) has to say what
PAM stack it wants the slave to run. When that stack is ready,
we emit the Ready signal as before, but now the Ready signal
carries a string argument saying which service is ready to
converse.
When we support multiple PAM stacks, the greeter will call
StartConversation for each stack, and will keep the UI
associated with each stack disabled until the Ready signals
come back one-by-one.
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 | 4 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-session.c | 4 |
3 files changed, 18 insertions, 8 deletions
diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c index 853d054a..5fed6f9b 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -230,11 +230,7 @@ static void on_ready (GdmGreeterClient *client, DBusMessage *message) { - g_debug ("GdmGreeterClient: Ready"); - - g_signal_emit (client, - gdm_greeter_client_signals[READY], - 0); + emit_string_signal_for_message (client, "Ready", message, READY); } static void @@ -404,6 +400,14 @@ send_dbus_void_method (DBusConnection *connection, } void +gdm_greeter_client_call_start_conversation (GdmGreeterClient *client, + const char *service_name) +{ + send_dbus_string_method (client->priv->connection, + "StartConversation", service_name); +} + +void gdm_greeter_client_call_begin_auto_login (GdmGreeterClient *client, const char *username) { @@ -866,9 +870,9 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass) G_STRUCT_OFFSET (GdmGreeterClientClass, ready), NULL, NULL, - g_cclosure_marshal_VOID__VOID, + g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, - 0); + 1, G_TYPE_STRING); gdm_greeter_client_signals[RESET] = g_signal_new ("reset", diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h index 9e093cfc..8982214a 100644 --- a/gui/simple-greeter/gdm-greeter-client.h +++ b/gui/simple-greeter/gdm-greeter-client.h @@ -83,13 +83,15 @@ GQuark gdm_greeter_client_error_quark (void); GdmGreeterClient * gdm_greeter_client_new (void); gboolean gdm_greeter_client_start (GdmGreeterClient *client, - GError **error); + GError **error); void gdm_greeter_client_stop (GdmGreeterClient *client); gboolean gdm_greeter_client_get_display_is_local (GdmGreeterClient *client); char * gdm_greeter_client_call_get_display_id (GdmGreeterClient *client); +void gdm_greeter_client_call_start_conversation (GdmGreeterClient *client, + const char *service_name); void gdm_greeter_client_call_begin_auto_login (GdmGreeterClient *client, const char *username); void gdm_greeter_client_call_begin_verification (GdmGreeterClient *client); diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c index bf2dd2e6..94473446 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -89,6 +89,7 @@ on_problem (GdmGreeterClient *client, static void on_ready (GdmGreeterClient *client, + const char *service_name, GdmGreeterSession *session) { g_debug ("GdmGreeterSession: Ready"); @@ -262,6 +263,7 @@ 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 @@ -415,6 +417,8 @@ 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; |