summaryrefslogtreecommitdiff
path: root/community/lightdm/lightdm-xdg-session-class.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/lightdm/lightdm-xdg-session-class.patch')
-rwxr-xr-xcommunity/lightdm/lightdm-xdg-session-class.patch130
1 files changed, 130 insertions, 0 deletions
diff --git a/community/lightdm/lightdm-xdg-session-class.patch b/community/lightdm/lightdm-xdg-session-class.patch
new file mode 100755
index 000000000..cd9093cf3
--- /dev/null
+++ b/community/lightdm/lightdm-xdg-session-class.patch
@@ -0,0 +1,130 @@
+=== modified file 'src/seat.c'
+--- src/seat.c 2013-10-03 21:38:07 +0000
++++ src/seat.c 2013-10-21 22:55:16 +0000
+@@ -1075,6 +1075,7 @@
+ g_signal_connect (greeter_session, "stopped", G_CALLBACK (session_stopped_cb), seat);
+
+ set_session_env (SESSION (greeter_session));
++ session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
+
+ session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);
+ if (getuid () == 0)
+
+=== modified file 'src/session-child.c'
+--- src/session-child.c 2013-07-26 02:27:41 +0000
++++ src/session-child.c 2013-10-21 22:55:16 +0000
+@@ -213,7 +213,6 @@
+ gchar *authentication_result_string;
+ gchar *service;
+ gchar *username;
+- gchar *class;
+ gchar *tty;
+ gchar *remote_host_name;
+ gchar *xdisplay;
+@@ -284,7 +283,7 @@
+ username = read_string ();
+ read_data (&do_authenticate, sizeof (do_authenticate));
+ read_data (&is_interactive, sizeof (is_interactive));
+- class = read_string ();
++ read_string (); /* Used to be class, now we just use the environment variable */
+ tty = read_string ();
+ remote_host_name = read_string ();
+ xdisplay = read_string ();
+@@ -480,7 +479,7 @@
+ g_variant_builder_init (&ck_parameters, G_VARIANT_TYPE ("(a(sv))"));
+ g_variant_builder_open (&ck_parameters, G_VARIANT_TYPE ("a(sv)"));
+ g_variant_builder_add (&ck_parameters, "(sv)", "unix-user", g_variant_new_int32 (user_get_uid (user)));
+- if (g_strcmp0 (class, XDG_SESSION_CLASS_GREETER) == 0)
++ if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") == 0)
+ g_variant_builder_add (&ck_parameters, "(sv)", "session-type", g_variant_new_string ("LoginWindow"));
+ if (xdisplay)
+ {
+@@ -601,7 +600,7 @@
+ if (child_pid > 0)
+ {
+ /* Log to utmp */
+- if (g_strcmp0 (class, XDG_SESSION_CLASS_GREETER) != 0)
++ if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0)
+ {
+ struct utmpx ut;
+ struct timeval tv;
+@@ -632,7 +631,7 @@
+ child_pid = 0;
+
+ /* Log to utmp */
+- if (g_strcmp0 (class, XDG_SESSION_CLASS_GREETER) != 0)
++ if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0)
+ {
+ struct utmpx ut;
+ struct timeval tv;
+
+=== modified file 'src/session.c'
+--- src/session.c 2013-09-19 14:53:48 +0000
++++ src/session.c 2013-10-21 22:43:11 +0000
+@@ -84,9 +84,6 @@
+ /* File to log to */
+ gchar *log_filename;
+
+- /* Seat class */
+- gchar *class;
+-
+ /* tty this session is running on */
+ gchar *tty;
+
+@@ -200,14 +197,6 @@
+ }
+
+ void
+-session_set_class (Session *session, const gchar *class)
+-{
+- g_return_if_fail (session != NULL);
+- g_free (session->priv->class);
+- session->priv->class = g_strdup (class);
+-}
+-
+-void
+ session_set_display_server (Session *session, DisplayServer *display_server)
+ {
+ g_return_if_fail (session != NULL);
+@@ -615,7 +604,7 @@
+ write_string (session, session->priv->username);
+ write_data (session, &session->priv->do_authenticate, sizeof (session->priv->do_authenticate));
+ write_data (session, &session->priv->is_interactive, sizeof (session->priv->is_interactive));
+- write_string (session, session->priv->class);
++ write_string (session, NULL); /* Used to be class, now we just use the environment variable */
+ write_string (session, session->priv->tty);
+ write_string (session, session->priv->remote_host_name);
+ write_string (session, session->priv->xdisplay);
+@@ -874,7 +863,6 @@
+ g_free (self->priv->messages);
+ g_free (self->priv->authentication_result_string);
+ g_free (self->priv->log_filename);
+- g_free (self->priv->class);
+ g_free (self->priv->tty);
+ g_free (self->priv->xdisplay);
+ if (self->priv->x_authority)
+
+=== modified file 'src/session.h'
+--- src/session.h 2013-08-14 20:14:16 +0000
++++ src/session.h 2013-10-21 22:55:16 +0000
+@@ -57,10 +57,6 @@
+ SESSION_TYPE_REMOTE
+ } SessionType;
+
+-#define XDG_SESSION_CLASS_USER "user"
+-#define XDG_SESSION_CLASS_GREETER "greeter"
+-#define XDG_SESSION_CLASS_LOCK_SCREEN "lock-screen"
+-
+ GType session_get_type (void);
+
+ Session *session_new (void);
+@@ -83,8 +79,6 @@
+
+ void session_set_log_file (Session *session, const gchar *filename);
+
+-void session_set_class (Session *session, const gchar *class);
+-
+ void session_set_display_server (Session *session, DisplayServer *display_server);
+
+ DisplayServer *session_get_display_server (Session *session);
+