Added SDL_HINT_VIDEO_X11_VISUALID
This commit is contained in:
@@ -3311,6 +3311,15 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define SDL_HINT_VIDEO_X11_SCALING_FACTOR "SDL_VIDEO_X11_SCALING_FACTOR"
|
#define SDL_HINT_VIDEO_X11_SCALING_FACTOR "SDL_VIDEO_X11_SCALING_FACTOR"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A variable forcing the visual ID used for X11 display modes.
|
||||||
|
*
|
||||||
|
* 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_VISUALID "SDL_VIDEO_X11_VISUALID"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A variable forcing the visual ID chosen for new X11 windows.
|
* A variable forcing the visual ID chosen for new X11 windows.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -265,11 +265,11 @@ static float GetGlobalContentScale(SDL_VideoDevice *_this)
|
|||||||
|
|
||||||
static int get_visualinfo(Display *display, int screen, XVisualInfo *vinfo)
|
static int get_visualinfo(Display *display, int screen, XVisualInfo *vinfo)
|
||||||
{
|
{
|
||||||
const char *visual_id = SDL_getenv("SDL_VIDEO_X11_VISUALID");
|
const char *visual_id = SDL_GetHint(SDL_HINT_VIDEO_X11_VISUALID);
|
||||||
int depth;
|
int depth;
|
||||||
|
|
||||||
/* Look for an exact visual, if requested */
|
/* Look for an exact visual, if requested */
|
||||||
if (visual_id) {
|
if (visual_id && *visual_id) {
|
||||||
XVisualInfo *vi, template;
|
XVisualInfo *vi, template;
|
||||||
int nvis;
|
int nvis;
|
||||||
|
|
||||||
|
|||||||
@@ -531,8 +531,9 @@ int X11_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_PropertiesI
|
|||||||
#if defined(SDL_VIDEO_OPENGL_GLX) || defined(SDL_VIDEO_OPENGL_EGL)
|
#if defined(SDL_VIDEO_OPENGL_GLX) || defined(SDL_VIDEO_OPENGL_EGL)
|
||||||
const int transparent = (window->flags & SDL_WINDOW_TRANSPARENT) ? SDL_TRUE : SDL_FALSE;
|
const int transparent = (window->flags & SDL_WINDOW_TRANSPARENT) ? SDL_TRUE : SDL_FALSE;
|
||||||
const char *forced_visual_id = SDL_GetHint(SDL_HINT_VIDEO_X11_WINDOW_VISUALID);
|
const char *forced_visual_id = SDL_GetHint(SDL_HINT_VIDEO_X11_WINDOW_VISUALID);
|
||||||
|
const char *display_visual_id = SDL_GetHint(SDL_HINT_VIDEO_X11_VISUALID);
|
||||||
|
|
||||||
if (forced_visual_id && forced_visual_id[0] != '\0') {
|
if (forced_visual_id && *forced_visual_id) {
|
||||||
XVisualInfo *vi, template;
|
XVisualInfo *vi, template;
|
||||||
int nvis;
|
int nvis;
|
||||||
|
|
||||||
@@ -547,7 +548,7 @@ int X11_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_PropertiesI
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if ((window->flags & SDL_WINDOW_OPENGL) &&
|
} else if ((window->flags & SDL_WINDOW_OPENGL) &&
|
||||||
!SDL_getenv("SDL_VIDEO_X11_VISUALID")) {
|
(!display_visual_id || !*display_visual_id)) {
|
||||||
XVisualInfo *vinfo = NULL;
|
XVisualInfo *vinfo = NULL;
|
||||||
|
|
||||||
#ifdef SDL_VIDEO_OPENGL_EGL
|
#ifdef SDL_VIDEO_OPENGL_EGL
|
||||||
|
|||||||
Reference in New Issue
Block a user