x11: Add a hint to force override-redirect.

Fixes #3776.
This commit is contained in:
Ryan C. Gordon 2021-06-09 22:10:20 -04:00
parent 642fa0e3cf
commit e65a658320
No known key found for this signature in database
GPG key ID: FA148B892AB48044
2 changed files with 13 additions and 1 deletions

View file

@ -1659,6 +1659,17 @@ extern "C" {
*/
#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
/**
* \brief Mark X11 windows as override-redirect.
*
* If set, this _might_ increase framerate at the expense of the desktop
* not working as expected. Override-redirect windows aren't noticed by the
* window manager at all.
*
* You should probably only use this for fullscreen windows, and you probably
* shouldn't even use it for that. But it's here if you want to try!
*/
#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
/**
* \brief An enumeration of hint priorities

View file

@ -372,6 +372,7 @@ X11_CreateWindow(_THIS, SDL_Window * window)
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
SDL_DisplayData *displaydata =
(SDL_DisplayData *) SDL_GetDisplayForWindow(window)->driverdata;
const SDL_bool force_override_redirect = SDL_GetHintBoolean(SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT, SDL_FALSE);
SDL_WindowData *windowdata;
Display *display = data->display;
int screen = displaydata->screen;
@ -444,7 +445,7 @@ X11_CreateWindow(_THIS, SDL_Window * window)
depth = displaydata->depth;
}
xattr.override_redirect = ((window->flags & SDL_WINDOW_TOOLTIP) || (window->flags & SDL_WINDOW_POPUP_MENU)) ? True : False;
xattr.override_redirect = ((window->flags & SDL_WINDOW_TOOLTIP) || (window->flags & SDL_WINDOW_POPUP_MENU) || force_override_redirect) ? True : False;
xattr.backing_store = NotUseful;
xattr.background_pixmap = None;
xattr.border_pixel = 0;