wayland: Add a hint to allow disabling libdecor use

Useful for testing xdg-shell path with compositors like Weston.
main
Sebastian Krzyszkowiak 2021-08-09 01:47:42 +02:00 committed by Sam Lantinga
parent 092a20d945
commit 2e6dac870f
2 changed files with 13 additions and 1 deletions

View File

@ -1265,6 +1265,17 @@ extern "C" {
*/ */
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
/**
* \brief A variable controlling whether the libdecor Wayland backend is allowed to be used.
*
* This variable can be set to the following values:
* "0" - libdecor use is disabled.
* "1" - libdecor use is enabled (default).
*
* libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
*/
#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
/** /**
* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). * \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
* *

View File

@ -37,6 +37,7 @@
#include "SDL_waylandtouch.h" #include "SDL_waylandtouch.h"
#include "SDL_waylandclipboard.h" #include "SDL_waylandclipboard.h"
#include "SDL_waylandvulkan.h" #include "SDL_waylandvulkan.h"
#include "SDL_hints.h"
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
@ -555,7 +556,7 @@ Wayland_VideoInit(_THIS)
#ifdef HAVE_LIBDECOR_H #ifdef HAVE_LIBDECOR_H
/* Don't have server-side decorations? Try client-side instead. */ /* Don't have server-side decorations? Try client-side instead. */
if (!data->decoration_manager && SDL_WAYLAND_HAVE_WAYLAND_LIBDECOR) { if (!data->decoration_manager && SDL_WAYLAND_HAVE_WAYLAND_LIBDECOR && SDL_GetHintBoolean(SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR, SDL_TRUE)) {
data->shell.libdecor = libdecor_new(data->display, &libdecor_interface); data->shell.libdecor = libdecor_new(data->display, &libdecor_interface);
/* If libdecor works, we don't need xdg-shell anymore. */ /* If libdecor works, we don't need xdg-shell anymore. */