diff options
author | Ray Strode <rstrode@redhat.com> | 2008-03-09 22:05:51 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-03-09 22:05:51 +0000 |
commit | 7ccdd86f867ebbd31137ae5cd5397e1243c6b294 (patch) | |
tree | 226af66d17ec67b3393411ce09f3f83cfdf89095 | |
parent | 073c52b1dbd8c89d0665e1df3958fa23e0b96866 (diff) | |
download | gdm-7ccdd86f867ebbd31137ae5cd5397e1243c6b294.tar.gz |
When the user has successfully been verified, inform the greeter, so that
2008-03-09 Ray Strode <rstrode@redhat.com>
* daemon/gdm-simple-slave.c:
(on_session_authorized),
* daemon/gdm-greeter-server.[ch]:
(gdm_greeter_server_user_authorized),
(do_introspect):
When the user has successfully been verified,
inform the greeter, so that it can make a judgement
about whether the user's session should be opened.
* gui/simple-greeter/gdm-greeter-client.c:
(on_user_authorized), (client_dbus_handle_message),
(gdm_greeter_client_class_init):
* gui/simple-greeter/gdm-greeter-session.c
(on_user_authorized), (gdm_greeter_session_init):
forward "user-authorized" signal from slave to
login window
* gui/simple-greeter/gdm-greeter-login-window.c:
(gdm_greeter_login_window_user_authorized):
When the user is verified start the session as soon
as the user has had an opporunity to interact with
language and session choosers
svn path=/trunk/; revision=5978
-rw-r--r-- | ChangeLog | 23 | ||||
-rw-r--r-- | daemon/gdm-greeter-server.c | 8 | ||||
-rw-r--r-- | daemon/gdm-greeter-server.h | 2 | ||||
-rw-r--r-- | daemon/gdm-simple-slave.c | 1 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-client.c | 21 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-client.h | 1 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-login-window.c | 10 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-login-window.h | 1 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-session.c | 13 |
9 files changed, 79 insertions, 1 deletions
@@ -1,5 +1,28 @@ 2008-03-09 Ray Strode <rstrode@redhat.com> + * daemon/gdm-simple-slave.c: + (on_session_authorized), + * daemon/gdm-greeter-server.[ch]: + (gdm_greeter_server_user_authorized), + (do_introspect): + When the user has successfully been verified, + inform the greeter, so that it can make a judgement + about whether the user's session should be opened. + * gui/simple-greeter/gdm-greeter-client.c: + (on_user_authorized), (client_dbus_handle_message), + (gdm_greeter_client_class_init): + * gui/simple-greeter/gdm-greeter-session.c + (on_user_authorized), (gdm_greeter_session_init): + forward "user-authorized" signal from slave to + login window + * gui/simple-greeter/gdm-greeter-login-window.c: + (gdm_greeter_login_window_user_authorized): + When the user is verified start the session as soon + as the user has had an opporunity to interact with + language and session choosers + +2008-03-09 Ray Strode <rstrode@redhat.com> + * gui/simple-greeter/gdm-greeter-login-window.[ch]: (do_cancel), (gdm_greeter_login_window_start_when_ready), (gdm_greeter_login_window_class_init): diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c index 9ad6c1e1..0768a4a4 100644 --- a/daemon/gdm-greeter-server.c +++ b/daemon/gdm-greeter-server.c @@ -280,6 +280,12 @@ gdm_greeter_server_request_timed_login (GdmGreeterServer *greeter_server, send_dbus_string_and_int_signal (greeter_server, "TimedLoginRequested", username, delay); } +void +gdm_greeter_server_user_authorized (GdmGreeterServer *greeter_server) +{ + send_dbus_void_signal (greeter_server, "UserAuthorized"); +} + /* Note: Use abstract sockets like dbus does by default on Linux. Abstract * sockets are only available on Linux. */ @@ -716,6 +722,8 @@ do_introspect (DBusConnection *connection, " </signal>\n" " <signal name=\"Reset\">\n" " </signal>\n" + " <signal name=\"UserAuthorized\">\n" + " </signal>\n" " </interface>\n"); reply = dbus_message_new_method_return (message); diff --git a/daemon/gdm-greeter-server.h b/daemon/gdm-greeter-server.h index e30094ff..e6b33032 100644 --- a/daemon/gdm-greeter-server.h +++ b/daemon/gdm-greeter-server.h @@ -94,6 +94,8 @@ void gdm_greeter_server_default_session_name_changed (GdmGreeterS void gdm_greeter_server_request_timed_login (GdmGreeterServer *greeter_server, const char *username, int delay); +void gdm_greeter_server_user_authorized (GdmGreeterServer *greeter_server); + G_END_DECLS diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c index 1cbf0230..8dfc0729 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -221,6 +221,7 @@ static void on_session_authorized (GdmSession *session, GdmSimpleSlave *slave) { + gdm_greeter_server_user_authorized (slave->priv->greeter_server); gdm_simple_slave_accredit_when_ready (slave); } diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c index 9b3620ba..3e55403c 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -68,6 +68,7 @@ enum { DEFAULT_LANGUAGE_NAME_CHANGED, DEFAULT_SESSION_NAME_CHANGED, TIMED_LOGIN_REQUESTED, + USER_AUTHORIZED, LAST_SIGNAL }; @@ -187,6 +188,15 @@ on_timed_login_requested (GdmGreeterClient *client, } static void +on_user_authorized (GdmGreeterClient *client, + DBusMessage *message) +{ + g_signal_emit (client, + gdm_greeter_client_signals[USER_AUTHORIZED], + 0); +} + +static void on_info_query (GdmGreeterClient *client, DBusMessage *message) { @@ -620,6 +630,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 { return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -894,6 +906,15 @@ 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", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GdmGreeterClientClass, user_authorized), + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } static void diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h index 9171604d..7adc4ea6 100644 --- a/gui/simple-greeter/gdm-greeter-client.h +++ b/gui/simple-greeter/gdm-greeter-client.h @@ -67,6 +67,7 @@ typedef struct void (* timed_login_requested) (GdmGreeterClient *client, const char *username, int delay); + void (* user_authorized) (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 99942662..41a70ae1 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -746,6 +746,16 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, return TRUE; } +void +gdm_greeter_login_window_user_authorized (GdmGreeterLoginWindow *login_window) +{ + g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window)); + + g_debug ("GdmGreeterLoginWindow: user now authorized"); + + gdm_greeter_login_window_start_session_when_ready (login_window); +} + static void _gdm_greeter_login_window_set_display_is_local (GdmGreeterLoginWindow *login_window, gboolean is) diff --git a/gui/simple-greeter/gdm-greeter-login-window.h b/gui/simple-greeter/gdm-greeter-login-window.h index 71fbbab1..817d0a2c 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.h +++ b/gui/simple-greeter/gdm-greeter-login-window.h @@ -79,6 +79,7 @@ gboolean gdm_greeter_login_window_problem (GdmGreeterLogin 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); G_END_DECLS diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c index 739e8615..8a6e3e2a 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -155,6 +155,14 @@ on_timed_login_requested (GdmGreeterClient *client, } static void +on_user_authorized (GdmGreeterClient *client, + GdmGreeterSession *session) +{ + g_debug ("GdmGreeterSession: user authorized"); + gdm_greeter_login_window_user_authorized (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); +} + +static void on_info_query (GdmGreeterClient *client, const char *text, GdmGreeterSession *session) @@ -839,7 +847,10 @@ gdm_greeter_session_init (GdmGreeterSession *session) "timed-login-requested", G_CALLBACK (on_timed_login_requested), session); - + g_signal_connect (session->priv->client, + "user-authorized", + G_CALLBACK (on_user_authorized), + session); /* We want to listen for panel mnemonics even if the * login window is focused, so we intercept them here. |