Browse Source

Added SDL_HINT_X11_XCB_LIBRARY

Sam Lantinga 8 months ago
parent
commit
997df06320
2 changed files with 13 additions and 2 deletions
  1. 11 0
      include/SDL3/SDL_hints.h
  2. 2 2
      src/video/x11/SDL_x11vulkan.c

+ 11 - 0
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.

+ 2 - 2
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);