diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-09-22 12:47:22 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-09-22 12:47:22 +1000 |
commit | 658561cb603b5accde340725f6013e3a79e4f237 (patch) | |
tree | d1e28da0cbbfa327e6d876cef2bfd23bb978ae74 /src/session.c | |
parent | 7c11dac48b906f49370d78d43dc14e00a5744479 (diff) | |
download | lightdm-658561cb603b5accde340725f6013e3a79e4f237.tar.gz |
Split session setup into pre and post PAM session sections
Diffstat (limited to 'src/session.c')
-rw-r--r-- | src/session.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/session.c b/src/session.c index c538ac35..78bbca54 100644 --- a/src/session.c +++ b/src/session.c @@ -326,6 +326,9 @@ session_real_start (Session *session) if (session->priv->console_kit_cookie) session_set_env (session, "XDG_SESSION_COOKIE", session->priv->console_kit_cookie); + if (!SESSION_GET_CLASS (session)->setup (session)) + return FALSE; + user = pam_session_get_user (session->priv->authentication); process_set_user (PROCESS (session), user); process_set_working_directory (PROCESS (session), user_get_home_directory (user)); @@ -353,13 +356,19 @@ void session_stop (Session *session) { g_return_if_fail (session != NULL); - SESSION_GET_CLASS (session)->stop (session); + SESSION_GET_CLASS (session)->cleanup (session); + process_signal (PROCESS (session), SIGTERM); +} + +static gboolean +session_setup (Session *session) +{ + return TRUE; } static void -session_real_stop (Session *session) +session_cleanup (Session *session) { - process_signal (PROCESS (session), SIGTERM); } static void @@ -417,7 +426,8 @@ session_class_init (SessionClass *klass) ProcessClass *process_class = PROCESS_CLASS (klass); klass->start = session_real_start; - klass->stop = session_real_stop; + klass->setup = session_setup; + klass->cleanup = session_cleanup; process_class->run = session_run; process_class->stopped = session_stopped; object_class->finalize = session_finalize; |