diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h index 9f5123c12a..7e00e1f9fb 100644 --- a/include/SDL3/SDL_hints.h +++ b/include/SDL3/SDL_hints.h @@ -3862,6 +3862,17 @@ extern "C" { */ #define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" +/** + * Specify the XCB library to load for the X11 driver. + * + * This defaults to "libX11-xcb.so" + * + * This hint should be set before initializing the video subsystem. + * + * \since This hint is available since SDL 3.0.0. + */ +#define SDL_HINT_X11_XCB_LIBRARY "SDL_X11_XCB_LIBRARY" + /** * A variable controlling whether XInput should be used for controller * handling. diff --git a/src/video/x11/SDL_x11vulkan.c b/src/video/x11/SDL_x11vulkan.c index cabd85e97c..67b526bcb3 100644 --- a/src/video/x11/SDL_x11vulkan.c +++ b/src/video/x11/SDL_x11vulkan.c @@ -107,8 +107,8 @@ int X11_Vulkan_LoadLibrary(SDL_VideoDevice *_this, const char *path) SDL_SetError("Installed Vulkan doesn't implement either the " VK_KHR_XCB_SURFACE_EXTENSION_NAME "extension or the " VK_KHR_XLIB_SURFACE_EXTENSION_NAME " extension"); goto fail; } else { - const char *libX11XCBLibraryName = SDL_getenv("SDL_X11_XCB_LIBRARY"); - if (!libX11XCBLibraryName) { + const char *libX11XCBLibraryName = SDL_GetHint(SDL_HINT_X11_XCB_LIBRARY); + if (!libX11XCBLibraryName || !*libX11XCBLibraryName) { libX11XCBLibraryName = "libX11-xcb.so"; } videoData->vulkan_xlib_xcb_library = SDL_LoadObject(libX11XCBLibraryName);