From e22f5ed7d348cebae0473231f01d9c13cb0bce96 Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Sun, 29 Jan 2023 12:45:48 -0500 Subject: [PATCH] wayland: Check that all required dynamic symbols have been successfully resolved at init time Ensure that all hard dependencies are resolved when dynamically loading the libraries required for the Wayland backend and fail gracefully if a required module was not initialized successfully. --- src/video/wayland/SDL_waylanddyn.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/video/wayland/SDL_waylanddyn.c b/src/video/wayland/SDL_waylanddyn.c index a0b6468d93..a263a94f65 100644 --- a/src/video/wayland/SDL_waylanddyn.c +++ b/src/video/wayland/SDL_waylanddyn.c @@ -152,8 +152,11 @@ int SDL_WAYLAND_LoadSymbols(void) #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *)WAYLAND_GetSym(#iface, thismod, SDL_TRUE); #include "SDL_waylandsym.h" - if (SDL_WAYLAND_HAVE_WAYLAND_CLIENT) { - /* all required symbols loaded. */ + if (SDL_WAYLAND_HAVE_WAYLAND_CLIENT && + SDL_WAYLAND_HAVE_WAYLAND_CURSOR && + SDL_WAYLAND_HAVE_WAYLAND_EGL && + SDL_WAYLAND_HAVE_WAYLAND_XKB) { + /* All required symbols loaded, only libdecor is optional. */ SDL_ClearError(); } else { /* in case something got loaded... */