From 997df06320add8302354fa9500cdbecb197be903 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 3 Aug 2024 09:54:06 -0700
Subject: [PATCH] Added SDL_HINT_X11_XCB_LIBRARY
---
include/SDL3/SDL_hints.h | 11 +++++++++++
src/video/x11/SDL_x11vulkan.c | 4 ++--
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h
index 9f5123c12ac3b..7e00e1f9fb986 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 cabd85e97cc70..67b526bcb30b1 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);