[gdm/wip/rstrode/wayland-filtering: 9/9] manager: filter out wayland user sessions if X11 login screen



commit 04d3b5a816a6a1a7e045e5902022dbb90ac78261
Author: Ray Strode <rstrode redhat com>
Date:   Wed Jun 17 09:32:46 2015 -0400

    manager: filter out wayland user sessions if X11 login screen
    
    We use wayland by default on the login screen, so if we're running
    in an X11 session, then the presumption is that we're incapable of
    using wayland. If we're incapable of using wayland sessions then
    we should ignore wayland sessions read from user configuration and
    fall back to non-wayland defaults.

 daemon/gdm-manager.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)
---
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 7602e75..2c76540 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -1345,8 +1345,11 @@ static void
 set_up_greeter_session (GdmManager *manager,
                         GdmDisplay *display)
 {
+        GdmSession *session;
+        char       *display_session_type = NULL;
         const char *allowed_user;
         struct passwd *passwd_entry;
+        gboolean greeter_is_wayland;
 
         allowed_user = get_username_for_greeter_display (manager, display);
 
@@ -1358,7 +1361,18 @@ set_up_greeter_session (GdmManager *manager,
                 return;
         }
 
-        create_embryonic_user_session_for_display (manager, display, passwd_entry->pw_uid);
+        session = create_embryonic_user_session_for_display (manager, display, passwd_entry->pw_uid);
+
+        /* If the greeter display isn't a wayland session,
+         * then don't allow the user session to be a wayland
+         * session either.
+         */
+        g_object_get (G_OBJECT (display),
+                      "session-type", &display_session_type,
+                      NULL);
+        greeter_is_wayland = g_strcmp0 (display_session_type, "wayland") == 0;
+        g_object_set (G_OBJECT (session), "ignore-wayland", !greeter_is_wayland, NULL);
+
         gdm_display_start_greeter_session (display);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]