summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2021-10-07 15:34:27 -0400
committerRay Strode <rstrode@redhat.com>2022-03-07 10:29:22 -0500
commitbb4f373f1eb743d33693fbd6f85a8326db3d4d27 (patch)
treef22faf410a6ab73f515e4341fa9ed19288ec5550
parent6f67e185b18a17a13812f541e2532b360a7a168c (diff)
downloadgdm-bb4f373f1eb743d33693fbd6f85a8326db3d4d27.tar.gz
local-display-factory: Don't crash if Xorg and Wayland are both unavailable
At the moment if Wayland doesn't work, the login screen will fall back to Xorg, and if Xorg doesn't work the login screen will fall back to Wayland. But if the fall back choice is disabled explicitly, GDM will just crash. This commit fixes the crash. Closes: https://gitlab.gnome.org/GNOME/gdm/-/issues/739
-rw-r--r--daemon/gdm-local-display-factory.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index eba38671..120847f9 100644
--- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c
@@ -678,8 +678,13 @@ ensure_display_for_seat (GdmLocalDisplayFactory *factory,
falling_back = factory->num_failures > 0;
session_types = gdm_local_display_factory_get_session_types (factory, falling_back);
- g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use %s%s",
- session_types[0], falling_back? " fallback" : "");
+ if (session_types == NULL) {
+ g_debug ("GdmLocalDisplayFactory: Both Wayland and Xorg are unavailable");
+ seat_supports_graphics = FALSE;
+ } else {
+ g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use %s%s",
+ session_types[0], falling_back? " fallback" : "");
+ }
} else {
is_seat0 = FALSE;