From b36a5ab6f43d6a4154410e2a22d0555eb15d01ea Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Tue, 3 Mar 2026 12:44:56 -0500 Subject: [PATCH] Log failure reasons during early X11 and Wayland initialization Log the reason for failure during initialization to the debug log to aid in troubleshooting. (cherry picked from commit 5880b8a283a856905edf279dd79917f5f50095df) --- src/video/wayland/SDL_waylandvideo.c | 7 +++++-- src/video/x11/SDL_x11video.c | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index 36ec2aca66..f2989897d1 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -547,10 +548,11 @@ static SDL_VideoDevice *Wayland_CreateDevice(bool require_preferred_protocols) SDL_PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER, NULL); bool display_is_external = !!display; - // Are we trying to connect to or are currently in a Wayland session? + // Are we trying to connect to, or are currently in, a Wayland session? if (!SDL_getenv("WAYLAND_DISPLAY")) { const char *session = SDL_getenv("XDG_SESSION_TYPE"); if (session && SDL_strcasecmp(session, "wayland") != 0) { + SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Wayland initialization failed: no Wayland session available"); return NULL; } } @@ -563,6 +565,7 @@ static SDL_VideoDevice *Wayland_CreateDevice(bool require_preferred_protocols) display = WAYLAND_wl_display_connect(NULL); if (!display) { SDL_WAYLAND_UnloadSymbols(); + SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Failed to connect to the Wayland display server: %s", strerror(errno)); return NULL; } } @@ -609,7 +612,7 @@ static SDL_VideoDevice *Wayland_CreateDevice(bool require_preferred_protocols) if (!display_is_external) { SDL_SetPointerProperty(SDL_GetGlobalProperties(), - SDL_PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER, display); + SDL_PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER, display); } device->internal = data; diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index c4f00021f5..0981c0f049 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -97,6 +97,14 @@ static SDL_VideoDevice *X11_CreateDevice(void) if (!x11_display) { SDL_X11_UnloadSymbols(); + + const char *session = SDL_getenv("XDG_SESSION_TYPE"); + if (session && SDL_strcasecmp(session, "wayland") == 0) { + SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Failed to connect to the X11 (XWayland) display server"); + } else { + SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Failed to connect to the X11 display server"); + } + return NULL; }