/* If there is a pending replacement greeter, start it */
if (IS_GREETER (session) && seat->priv->replacement_greeter)
{
- Session *s = SESSION(seat->priv->replacement_greeter);
+ Greeter *replacement_greeter = seat->priv->replacement_greeter;
seat->priv->replacement_greeter = NULL;
- g_object_unref(s);
- if (session_get_is_authenticated (s))
+ if (session_get_is_authenticated (SESSION (replacement_greeter)))
{
l_debug (seat, "Greeter stopped, running session");
- run_session (seat, s);
+ run_session (seat, SESSION (replacement_greeter));
}
else
{
l_debug (seat, "Greeter stopped, starting session authentication");
- start_session (seat, s);
+ start_session (seat, SESSION (replacement_greeter));
}
+ g_object_unref (replacement_greeter);
}
/* If this is the greeter session then re-use this display server */
else if (IS_GREETER (session) &&
for (i = 0; dirs[i]; i++)
{
gchar *filename, *path;
+ const gchar *default_session_type = "x";
+
+ if (strcmp (dirs[i], WAYLAND_SESSIONS_DIR) == 0)
+ default_session_type = "wayland";
filename = g_strdup_printf ("%s.desktop", session_name);
path = g_build_filename (dirs[i], filename, NULL);
g_free (filename);
- session_config = session_config_new_from_file (path, &error);
+ session_config = session_config_new_from_file (path, default_session_type, &error);
g_free (path);
if (session_config)
break;
session_name = user_get_xsession (user);
language = user_get_language (user);
+ /* Override session for autologin if configured */
+ if (autostart)
+ {
+ const gchar *autologin_session_name = seat_get_string_property (seat, "autologin-session");
+ if (autologin_session_name)
+ session_name = autologin_session_name;
+ }
+
if (!session_name)
session_name = seat_get_string_property (seat, "user-session");
sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
g_object_unref (self->priv->next_session);
if (self->priv->session_to_activate)
g_object_unref (self->priv->session_to_activate);
+ if (self->priv->replacement_greeter)
+ g_object_unref (self->priv->replacement_greeter);
G_OBJECT_CLASS (seat_parent_class)->finalize (object);
}