From: Michael Terry Date: Sun, 25 Aug 2013 20:46:15 +0000 (-0400) Subject: Drop create-session username/session argument, we'll do it via active-username change... X-Git-Url: http://rtime.felk.cvut.cz/gitweb/sojka/lightdm.git/commitdiff_plain/4ade3abdfaee9d5fc3569db349231b654b70481b Drop create-session username/session argument, we'll do it via active-username change signals --- diff --git a/src/greeter.c b/src/greeter.c index dddcedac..2070aaf6 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -371,7 +371,7 @@ handle_login (Greeter *greeter, guint32 sequence_number, const gchar *username) g_object_notify (G_OBJECT (greeter), "active-username"); greeter->priv->authentication_sequence_number = sequence_number; - g_signal_emit (greeter, signals[CREATE_SESSION], 0, username, &greeter->priv->authentication_session); + g_signal_emit (greeter, signals[CREATE_SESSION], 0, &greeter->priv->authentication_session); if (!greeter->priv->authentication_session) { send_end_authentication (greeter, sequence_number, "", PAM_USER_UNKNOWN); @@ -479,7 +479,7 @@ handle_login_remote (Greeter *greeter, const gchar *session_name, const gchar *u greeter->priv->authentication_sequence_number = sequence_number; greeter->priv->remote_session = g_strdup (session_name); - g_signal_emit (greeter, signals[CREATE_SESSION], 0, username, &greeter->priv->authentication_session); + g_signal_emit (greeter, signals[CREATE_SESSION], 0, &greeter->priv->authentication_session); if (greeter->priv->authentication_session) { g_signal_connect (G_OBJECT (greeter->priv->authentication_session), "got-messages", G_CALLBACK (pam_messages_cb), greeter); @@ -1002,7 +1002,7 @@ greeter_class_init (GreeterClass *klass) g_signal_accumulator_first_wins, NULL, NULL, - SESSION_TYPE, 1, G_TYPE_STRING); + SESSION_TYPE, 0); signals[START_SESSION] = g_signal_new ("start-session", diff --git a/src/seat-unity.c b/src/seat-unity.c index c4b76293..52a900ae 100644 --- a/src/seat-unity.c +++ b/src/seat-unity.c @@ -535,12 +535,12 @@ seat_unity_create_greeter_session (Seat *seat) } static Session * -seat_unity_create_session (Seat *seat, Session *user_session) +seat_unity_create_session (Seat *seat) { Session *session; const gchar *xdg_seat; - session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat, user_session); + session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat); xdg_seat = "seat0"; l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat); session_set_env (session, "XDG_SEAT", xdg_seat); @@ -631,6 +631,9 @@ seat_unity_set_next_session (Seat *seat, Session *session) DisplayServer *display_server; const gchar *id = NULL; + if (!session) + return; + /* If no compositor, don't worry about it */ if (SEAT_UNITY (seat)->priv->use_vt_switching) return; @@ -650,6 +653,8 @@ seat_unity_set_next_session (Seat *seat, Session *session) g_warning ("Failed to work out session ID to mark"); } } + + SEAT_CLASS (seat_unity_parent_class)->set_next_session (seat, session); } static void diff --git a/src/seat-xlocal.c b/src/seat-xlocal.c index 2cdf0496..7b626de8 100644 --- a/src/seat-xlocal.c +++ b/src/seat-xlocal.c @@ -177,12 +177,12 @@ seat_xlocal_create_greeter_session (Seat *seat) } static Session * -seat_xlocal_create_session (Seat *seat, Session *user_session) +seat_xlocal_create_session (Seat *seat) { Session *session; const gchar *xdg_seat; - session = SEAT_CLASS (seat_xlocal_parent_class)->create_session (seat, user_session); + session = SEAT_CLASS (seat_xlocal_parent_class)->create_session (seat); xdg_seat = "seat0"; l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat); session_set_env (SESSION (session), "XDG_SEAT", xdg_seat); diff --git a/src/seat-xremote.c b/src/seat-xremote.c index a30bfffb..05b25e0c 100644 --- a/src/seat-xremote.c +++ b/src/seat-xremote.c @@ -64,12 +64,12 @@ seat_xremote_create_greeter_session (Seat *seat) } static Session * -seat_xremote_create_session (Seat *seat, Session *user_session) +seat_xremote_create_session (Seat *seat) { Session *session; const gchar *xdg_seat; - session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat, user_session); + session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat); xdg_seat = "seat0"; l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat); session_set_env (SESSION (session), "XDG_SEAT", xdg_seat); diff --git a/src/seat.c b/src/seat.c index 4744799d..714fe099 100644 --- a/src/seat.c +++ b/src/seat.c @@ -528,14 +528,12 @@ greeter_active_username_changed_cb (Greeter *greeter, GParamSpec *pspec, Seat *s Session *session; session = find_user_session (seat, greeter_get_active_username (greeter), seat->priv->active_session); - if (session) - { - if (seat->priv->next_session) - g_object_unref (seat->priv->next_session); - seat->priv->next_session = g_object_ref (session); - SEAT_GET_CLASS (seat)->set_next_session (seat, session); - } + if (seat->priv->next_session) + g_object_unref (seat->priv->next_session); + seat->priv->next_session = session ? g_object_ref (session) : NULL; + + SEAT_GET_CLASS (seat)->set_next_session (seat, session); } static void @@ -725,13 +723,11 @@ set_session_env (Session *session) } static Session * -create_session (Seat *seat, gboolean autostart, const gchar *username) +create_session (Seat *seat, gboolean autostart) { Session *session; - Session *user_session; - user_session = find_user_session (seat, username, NULL); - session = SEAT_GET_CLASS (seat)->create_session (seat, user_session); + session = SEAT_GET_CLASS (seat)->create_session (seat); seat->priv->sessions = g_list_append (seat->priv->sessions, session); if (autostart) g_signal_connect (session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat); @@ -844,7 +840,7 @@ create_user_session (Seat *seat, const gchar *username, gboolean autostart) const gchar *desktop_name; gchar **argv; - session = create_session (seat, autostart, username); + session = create_session (seat, autostart); session_set_session_type (session, session_config_get_session_type (session_config)); session_set_env (session, "DESKTOP_SESSION", session_name); session_set_env (session, "GDMSESSION", session_name); @@ -888,7 +884,7 @@ create_guest_session (Seat *seat) return NULL; } - session = create_session (seat, TRUE, NULL); + session = create_session (seat, TRUE); session_set_session_type (session, session_config_get_session_type (session_config)); session_set_do_authenticate (session, TRUE); session_set_is_guest (session, TRUE); @@ -901,11 +897,11 @@ create_guest_session (Seat *seat) } static Session * -greeter_create_session_cb (Greeter *greeter, Seat *seat, const gchar *username) +greeter_create_session_cb (Greeter *greeter, Seat *seat) { Session *session; - session = create_session (seat, FALSE, username); + session = create_session (seat, FALSE); session_set_session_type (session, session_get_session_type (SESSION (greeter))); session_set_display_server (session, session_get_display_server (SESSION (greeter))); @@ -1569,7 +1565,7 @@ seat_real_create_greeter_session (Seat *seat) } static Session * -seat_real_create_session (Seat *seat, Session *user_session) +seat_real_create_session (Seat *seat) { return session_new (); } diff --git a/src/seat.h b/src/seat.h index 99b9bfff..7457230d 100644 --- a/src/seat.h +++ b/src/seat.h @@ -44,7 +44,7 @@ typedef struct DisplayServer *(*create_display_server) (Seat *seat, const gchar *session_type); gboolean (*display_server_supports_session_type) (Seat *seat, DisplayServer *display_server, const gchar *session_type); Greeter *(*create_greeter_session) (Seat *seat); - Session *(*create_session) (Seat *seat, Session *user_session); + Session *(*create_session) (Seat *seat); void (*set_active_session)(Seat *seat, Session *session); void (*set_next_session)(Seat *seat, Session *session); Session *(*get_active_session)(Seat *seat);