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);
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);
g_signal_accumulator_first_wins,
NULL,
NULL,
- SESSION_TYPE, 1, G_TYPE_STRING);
+ SESSION_TYPE, 0);
signals[START_SESSION] =
g_signal_new ("start-session",
}
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);
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;
g_warning ("Failed to work out session ID to mark");
}
}
+
+ SEAT_CLASS (seat_unity_parent_class)->set_next_session (seat, session);
}
static void
}
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);
}
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);
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
}
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);
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);
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);
}
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)));
}
static Session *
-seat_real_create_session (Seat *seat, Session *user_session)
+seat_real_create_session (Seat *seat)
{
return session_new ();
}
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);