session_set_username (session, username);
session_set_do_authenticate (session, TRUE);
argv = get_session_argv (session_config, seat_get_string_property (seat, "session-wrapper"));
- g_object_unref (session_config);
session_set_argv (session, argv);
g_strfreev (argv);
+
+ g_object_unref (session_config);
}
else
+ {
g_debug ("Can't find session '%s'", seat_get_string_property (seat, "user-session"));
+ session = NULL;
+ }
g_object_unref (user);
return NULL;
argv = get_session_argv (session_config, NULL);
- g_object_unref (session_config);
greeter_wrapper = seat_get_string_property (seat, "greeter-wrapper");
if (greeter_wrapper)
{
}
greeter_session = SEAT_GET_CLASS (seat)->create_greeter_session (seat);
+ session_set_session_type (SESSION (greeter_session), session_config_get_session_type (session_config));
seat->priv->sessions = g_list_append (seat->priv->sessions, SESSION (greeter_session));
g_signal_connect (greeter_session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat);
g_signal_connect (greeter_session, "stopped", G_CALLBACK (session_stopped_cb), seat);
greeter_set_hint (greeter_session, "show-remote-login", seat_get_boolean_property (seat, "greeter-show-remote-login") ? "true" : "false");
greeter_set_hint (greeter_session, "has-guest-account", seat_get_allow_guest (seat) && seat_get_boolean_property (seat, "greeter-allow-guest") ? "true" : "false");
+ g_object_unref (session_config);
+
return greeter_session;
}
"No Exec option in session file: %s", filename);
return NULL;
}
- g_key_file_free (desktop_file);
config = g_object_new (SESSION_CONFIG_TYPE, NULL);
config->priv->command = command;
config->priv->session_type = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-Session-Type", NULL);
+ if (!config->priv->session_type)
+ config->priv->session_type = g_strdup ("x");
+
+ g_key_file_free (desktop_file);
return config;
}
struct SessionPrivate
{
+ /* Session type */
+ gchar *session_type;
+
/* Display server running on */
DisplayServer *display_server;
void
session_set_session_type (Session *session, const gchar *session_type)
{
+ g_return_if_fail (session != NULL);
+ g_free (session->priv->session_type);
+ session->priv->session_type = g_strdup (session_type);
}
const gchar *
session_get_session_type (Session *session)
{
g_return_val_if_fail (session != NULL, NULL);
- return "x";
+ return session->priv->session_type;
}
void
Session *self = SESSION (object);
int i;
+ g_free (self->priv->session_type);
if (self->priv->display_server)
g_object_unref (self->priv->display_server);
if (self->priv->pid)