* Restart X server if it crashes during a session
* Don't set language environment variables, use the daemon values
(system default) and leave it to ~/.profile for users to set these
+ * Change greeter library API, starting a session no longer has a language
+ option
Overview of changes in lightdm 0.4.0
@greeter:
@session:
-@language:
-
-
-<!-- ##### FUNCTION ldm_greeter_start_session_with_defaults ##### -->
-<para>
-
-</para>
-
-@greeter:
<!-- ##### FUNCTION ldm_greeter_get_can_suspend ##### -->
if (ldm_greeter_get_is_authenticated (greeter))
{
gchar *session = get_session ();
- ldm_greeter_start_session (greeter, session, NULL);
+ ldm_greeter_start_session (greeter, session);
g_free (session);
}
else
username_entry.sensitive = true;
username_entry.grab_focus ();
if (greeter.is_authenticated)
- greeter.start_session_with_defaults ();
+ greeter.start_default_session ();
else
{
message_label.label = "Failed to authenticate";
* ldm_greeter_start_session:
* @greeter: A #LdmGreeter
* @session: (allow-none): The session to log into or NULL to use the default
- * @language: (allow-none): The language to use or NULL to use the default
*
* Start a session for the logged in user.
**/
void
-ldm_greeter_start_session (LdmGreeter *greeter, const gchar *session, const gchar *language)
+ldm_greeter_start_session (LdmGreeter *greeter, const gchar *session)
{
guint8 message[MAX_MESSAGE_LENGTH];
gsize offset = 0;
if (!session)
session = "";
- if (!language)
- language = "";
- g_debug ("Starting session %s with language %s", session, language);
- write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_START_SESSION, string_length (session) + string_length (language), &offset);
+ g_debug ("Starting session %s", session);
+ write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_START_SESSION, string_length (session), &offset);
write_string (message, MAX_MESSAGE_LENGTH, session, &offset);
- write_string (message, MAX_MESSAGE_LENGTH, language, &offset);
write_message (greeter, message, offset);
}
* Login a user to a session using default settings for that user.
**/
void
-ldm_greeter_start_session_with_defaults (LdmGreeter *greeter)
+ldm_greeter_start_default_session (LdmGreeter *greeter)
{
- ldm_greeter_start_session (greeter, NULL, NULL);
+ ldm_greeter_start_session (greeter, NULL);
}
static gboolean
public bool get_user_defaults (string username, out string language, out string layout, out string session);
public unowned GLib.List<weak LightDM.User> get_users ();
public void hibernate ();
- public void start_session (string? session, string? language);
- public void start_session_with_defaults ();
+ public void start_session (string? session);
+ public void start_default_session ();
public void provide_secret (string secret);
public void restart ();
public void set_layout (string layout);
const gchar *ldm_greeter_get_authentication_user (LdmGreeter *greeter);
-void ldm_greeter_start_session (LdmGreeter *greeter, const gchar *session, const gchar *language);
+void ldm_greeter_start_session (LdmGreeter *greeter, const gchar *session);
-void ldm_greeter_start_session_with_defaults (LdmGreeter *greeter);
+void ldm_greeter_start_default_session (LdmGreeter *greeter);
gboolean ldm_greeter_get_can_suspend (LdmGreeter *greeter);
return d->authenticationUser;
}
-void Greeter::startSession(const QString &session, const QString &language)
+void Greeter::startSession(const QString &session)
{
- qDebug() << "Starting session " << session << " with language " << language;
- writeHeader(GREETER_MESSAGE_START_SESSION, stringLength(session) + stringLength(language));
+ qDebug() << "Starting session " << session;
+ writeHeader(GREETER_MESSAGE_START_SESSION, stringLength(session));
writeString(session);
- writeString(language);
flush();
}
void loginAsGuest();
void provideSecret(const QString &secret);
void cancelAuthentication();
- void startSession(const QString &session=QString(), const QString &language=QString());
+ void startSession(const QString &session=QString());
bool canSuspend() const;
bool canHibernate() const;
}
static gboolean
-start_user_session (Display *display, const gchar *session, const gchar *language)
+start_user_session (Display *display, const gchar *session)
{
- gchar *filename, *path, *old_language, *xsessions_dir;
+ gchar *filename, *path, *xsessions_dir;
gchar *session_command;
User *user;
gboolean supports_transitions;
/* Update the .dmrc with changed settings */
g_key_file_set_string (dmrc_file, "Desktop", "Session", session);
- old_language = g_key_file_get_string (dmrc_file, "Desktop", "Language", NULL);
- if (language && (!old_language || !g_str_equal(language, old_language)))
- {
- g_key_file_set_string (dmrc_file, "Desktop", "Language", language);
- /* We don't have advanced language checking, so reset these variables */
- g_key_file_remove_key (dmrc_file, "Desktop", "Langlist", NULL);
- g_key_file_remove_key (dmrc_file, "Desktop", "LCMess", NULL);
- }
- g_free (old_language);
xsessions_dir = config_get_string (config_get_instance (), "LightDM", "xsessions-directory");
filename = g_strdup_printf ("%s.desktop", session);
{
g_debug ("User %s authorized", pam_session_get_username (session));
pam_session_authorize (session);
- start_user_session (display, display->priv->default_session, NULL);
+ start_user_session (display, display->priv->default_session);
}
else
{
}
static void
-greeter_start_session_cb (Greeter *greeter, const gchar *session, const gchar *language, Display *display)
+greeter_start_session_cb (Greeter *greeter, const gchar *session, Display *display)
{
/* Default session requested */
if (strcmp (session, "") == 0)
session = display->priv->default_session;
- /* Default language requested */
- if (strcmp (language, "") == 0)
- language = NULL;
-
display->priv->user_pam_session = greeter_get_pam_session (greeter);
if (!display->priv->user_pam_session ||
return;
}
- start_user_session (display, session, language);
+ start_user_session (display, session);
/* Stop session, waiting for user session to indicate it is ready (if supported) */
// FIXME: Hard-coded timeout
}
static void
-handle_start_session (Greeter *greeter, gchar *session, gchar *language)
+handle_start_session (Greeter *greeter, gchar *session)
{
/*if (greeter->priv->user_session != NULL)
{
return;
}*/
- g_debug ("Greeter start session %s with language %s", session, language);
+ g_debug ("Greeter start session %s", session);
- g_signal_emit (greeter, signals[START_SESSION], 0, session, language);
+ g_signal_emit (greeter, signals[START_SESSION], 0, session);
}
static void
gsize n_to_read, n_read, offset;
GIOStatus status;
int id, n_secrets, i;
- gchar *username, *session_name, *language;
+ gchar *username, *session_name;
gchar **secrets;
GError *error = NULL;
break;
case GREETER_MESSAGE_START_SESSION:
session_name = read_string (greeter, &offset);
- language = read_string (greeter, &offset);
- handle_start_session (greeter, session_name, language);
+ handle_start_session (greeter, session_name);
g_free (session_name);
- g_free (language);
break;
case GREETER_MESSAGE_GET_USER_DEFAULTS:
username = read_string (greeter, &offset);
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GreeterClass, start_session),
NULL, NULL,
- ldm_marshal_VOID__STRING_STRING,
- G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
g_type_class_add_private (klass, sizeof (GreeterPrivate));
}
typedef struct
{
SessionClass parent_class;
- void (*start_session)(Greeter *greeter, const gchar *session, const gchar *language);
+ void (*start_session)(Greeter *greeter, const gchar *session);
} GreeterClass;
GType greeter_get_type (void);
BOOLEAN:OBJECT
VOID:INT,POINTER
VOID:OBJECT,BOOLEAN
-VOID:STRING,STRING
{
notify_status ("GREETER AUTHENTICATION-COMPLETE AUTHENTICATED=%s", ldm_greeter_get_is_authenticated (greeter) ? "TRUE" : "FALSE");
if (ldm_greeter_get_is_authenticated (greeter))
- ldm_greeter_start_session_with_defaults (greeter);
+ ldm_greeter_start_default_session (greeter);
}
static void