mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Add SDL_HINT_VIDEO_X11_NET_WM_PING to allow disabling
_NET_WM_PING protocol handling in CreateWindow if desired.
This commit is contained in:
parent
2b0140a91f
commit
38edc1779a
@ -185,6 +185,20 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
|
#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
|
||||||
|
*
|
||||||
|
* This variable can be set to the following values:
|
||||||
|
* "0" - Disable _NET_WM_PING
|
||||||
|
* "1" - Enable _NET_WM_PING
|
||||||
|
*
|
||||||
|
* By default SDL will use _NET_WM_PING, but for applications that know they
|
||||||
|
* will not always be able to respond to ping requests in a timely manner they can
|
||||||
|
* turn it off to avoid the window manager thinking the app is hung.
|
||||||
|
* The hint is checked in CreateWindow.
|
||||||
|
*/
|
||||||
|
#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
|
* \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
|
||||||
*
|
*
|
||||||
|
@ -542,11 +542,23 @@ X11_CreateWindow(_THIS, SDL_Window * window)
|
|||||||
(unsigned char *)&_NET_WM_BYPASS_COMPOSITOR_HINT_ON, 1);
|
(unsigned char *)&_NET_WM_BYPASS_COMPOSITOR_HINT_ON, 1);
|
||||||
|
|
||||||
{
|
{
|
||||||
Atom protocols[] = {
|
Atom protocols[2];
|
||||||
data->WM_DELETE_WINDOW, /* Allow window to be deleted by the WM */
|
int proto_count = 0;
|
||||||
data->_NET_WM_PING, /* Respond so WM knows we're alive */
|
const char *ping_hint;
|
||||||
};
|
|
||||||
X11_XSetWMProtocols(display, w, protocols, sizeof (protocols) / sizeof (protocols[0]));
|
protocols[proto_count] = data->WM_DELETE_WINDOW; /* Allow window to be deleted by the WM */
|
||||||
|
proto_count++;
|
||||||
|
|
||||||
|
ping_hint = SDL_GetHint(SDL_HINT_VIDEO_X11_NET_WM_PING);
|
||||||
|
/* Default to using ping if there is no hint */
|
||||||
|
if (!ping_hint || SDL_atoi(ping_hint)) {
|
||||||
|
protocols[proto_count] = data->_NET_WM_PING; /* Respond so WM knows we're alive */
|
||||||
|
proto_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_assert(proto_count <= sizeof(protocols) / sizeof(protocols[0]));
|
||||||
|
|
||||||
|
X11_XSetWMProtocols(display, w, protocols, proto_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SetupWindowData(_this, window, w, SDL_TRUE) < 0) {
|
if (SetupWindowData(_this, window, w, SDL_TRUE) < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user