diff --git a/src/video/wayland/SDL_waylanddyn.c b/src/video/wayland/SDL_waylanddyn.c index a32f1a09d4..f95404337a 100644 --- a/src/video/wayland/SDL_waylanddyn.c +++ b/src/video/wayland/SDL_waylanddyn.c @@ -71,23 +71,25 @@ typedef struct { SDL_SharedObject *lib; const char *libname; + const char *hint; + bool hint_default; } waylanddynlib; static waylanddynlib waylandlibs[] = { - { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC }, + { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, NULL, false }, #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL - { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL }, + { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, NULL, false }, #endif #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR - { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR }, + { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, NULL, false }, #endif #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON - { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON }, + { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, NULL, false }, #endif #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR - { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR }, + { NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR, SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR, true }, #endif - { NULL, NULL } + { NULL, NULL, NULL, false } }; static void *WAYLAND_GetSym(const char *fnname, int *pHasModule, bool required) @@ -173,6 +175,10 @@ bool SDL_WAYLAND_LoadSymbols(void) int *thismod = NULL; for (i = 0; i < SDL_arraysize(waylandlibs); i++) { if (waylandlibs[i].libname) { + if (waylandlibs[i].hint && + !SDL_GetHintBoolean(waylandlibs[i].hint, waylandlibs[i].hint_default)) { + continue; + } waylandlibs[i].lib = SDL_LoadObject(waylandlibs[i].libname); } } diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index e7f41d8cf1..36ec2aca66 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -1397,10 +1397,6 @@ static bool should_use_libdecor(SDL_VideoData *data, bool ignore_xdg) return false; } - if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR, true)) { - return false; - } - if (SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR, false)) { return true; }