diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h index 4abace78b3..9f5123c12a 100644 --- a/include/SDL3/SDL_hints.h +++ b/include/SDL3/SDL_hints.h @@ -3300,6 +3300,20 @@ extern "C" { */ #define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" +/** + * A variable controlling whether SDL uses DirectColor visuals. + * + * The variable can be set to the following values: + * + * - "0": Disable DirectColor visuals. + * - "1": Enable DirectColor visuals. (default) + * + * This hint should be set before initializing the video subsystem. + * + * \since This hint is available since SDL 3.0.0. + */ +#define SDL_HINT_VIDEO_X11_NODIRECTCOLOR "SDL_VIDEO_X11_NODIRECTCOLOR" + /** * A variable forcing the content scaling factor for X11 displays. * diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index 5024450a9d..e255f3ce4d 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -491,7 +491,10 @@ void X11_VideoQuit(SDL_VideoDevice *_this) SDL_bool X11_UseDirectColorVisuals(void) { - return (SDL_getenv("SDL_VIDEO_X11_NODIRECTCOLOR") == NULL); + if (SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_NODIRECTCOLOR, SDL_FALSE)) { + return SDL_FALSE; + } + return SDL_TRUE; } #endif /* SDL_VIDEO_DRIVER_X11 */