mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-31 05:56:24 +08:00
Don't load libdecor if SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR is false
Fixes https://github.com/libsdl-org/SDL/issues/14887
This commit is contained in:
@@ -71,23 +71,25 @@ typedef struct
|
|||||||
{
|
{
|
||||||
SDL_SharedObject *lib;
|
SDL_SharedObject *lib;
|
||||||
const char *libname;
|
const char *libname;
|
||||||
|
const char *hint;
|
||||||
|
bool hint_default;
|
||||||
} waylanddynlib;
|
} waylanddynlib;
|
||||||
|
|
||||||
static waylanddynlib waylandlibs[] = {
|
static waylanddynlib waylandlibs[] = {
|
||||||
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC },
|
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, NULL, false },
|
||||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
|
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
|
||||||
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL },
|
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, NULL, false },
|
||||||
#endif
|
#endif
|
||||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
|
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
|
||||||
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR },
|
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, NULL, false },
|
||||||
#endif
|
#endif
|
||||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
|
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
|
||||||
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON },
|
{ NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, NULL, false },
|
||||||
#endif
|
#endif
|
||||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR
|
#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
|
#endif
|
||||||
{ NULL, NULL }
|
{ NULL, NULL, NULL, false }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *WAYLAND_GetSym(const char *fnname, int *pHasModule, bool required)
|
static void *WAYLAND_GetSym(const char *fnname, int *pHasModule, bool required)
|
||||||
@@ -173,6 +175,10 @@ bool SDL_WAYLAND_LoadSymbols(void)
|
|||||||
int *thismod = NULL;
|
int *thismod = NULL;
|
||||||
for (i = 0; i < SDL_arraysize(waylandlibs); i++) {
|
for (i = 0; i < SDL_arraysize(waylandlibs); i++) {
|
||||||
if (waylandlibs[i].libname) {
|
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);
|
waylandlibs[i].lib = SDL_LoadObject(waylandlibs[i].libname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1397,10 +1397,6 @@ static bool should_use_libdecor(SDL_VideoData *data, bool ignore_xdg)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR, true)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR, false)) {
|
if (SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR, false)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user