summaryrefslogtreecommitdiff
path: root/dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch')
-rw-r--r--dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch b/dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch
new file mode 100644
index 000000000000..c4643b332a37
--- /dev/null
+++ b/dev-games/godot/files/godot-4.1-xkb-no-sowrap.patch
@@ -0,0 +1,77 @@
+https://github.com/godotengine/godot/pull/79097
+From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
+Date: Thu, 6 Jul 2023 14:05:28 +0200
+Subject: [PATCH] Linux: Fix build with `use_sowrap=no` and various
+ warnings/errors
+
+--- a/platform/linuxbsd/joypad_linux.cpp
++++ b/platform/linuxbsd/joypad_linux.cpp
+@@ -98,19 +98,20 @@ static bool detect_sandbox() {
+
+ JoypadLinux::JoypadLinux(Input *in) {
+ #ifdef UDEV_ENABLED
+-#ifdef SOWRAP_ENABLED
+-#ifdef DEBUG_ENABLED
+- int dylibloader_verbose = 1;
+-#else
+- int dylibloader_verbose = 0;
+-#endif
+ if (detect_sandbox()) {
+ // Linux binaries in sandboxes / containers need special handling because
+ // libudev doesn't work there. So we need to fallback to manual parsing
+ // of /dev/input in such case.
+ use_udev = false;
+ print_verbose("JoypadLinux: udev enabled, but detected incompatible sandboxed mode. Falling back to /dev/input to detect joypads.");
+- } else {
++ }
++#ifdef SOWRAP_ENABLED
++ else {
++#ifdef DEBUG_ENABLED
++ int dylibloader_verbose = 1;
++#else
++ int dylibloader_verbose = 0;
++#endif
+ use_udev = initialize_libudev(dylibloader_verbose) == 0;
+ if (use_udev) {
+ if (!udev_new || !udev_unref || !udev_enumerate_new || !udev_enumerate_add_match_subsystem || !udev_enumerate_scan_devices || !udev_enumerate_get_list_entry || !udev_list_entry_get_next || !udev_list_entry_get_name || !udev_device_new_from_syspath || !udev_device_get_devnode || !udev_device_get_action || !udev_device_unref || !udev_enumerate_unref || !udev_monitor_new_from_netlink || !udev_monitor_filter_add_match_subsystem_devtype || !udev_monitor_enable_receiving || !udev_monitor_get_fd || !udev_monitor_receive_device || !udev_monitor_unref) {
+@@ -124,10 +125,11 @@ JoypadLinux::JoypadLinux(Input *in) {
+ print_verbose("JoypadLinux: udev enabled, but couldn't be loaded. Falling back to /dev/input to detect joypads.");
+ }
+ }
+-#endif
++#endif // SOWRAP_ENABLED
+ #else
+ print_verbose("JoypadLinux: udev disabled, parsing /dev/input to detect joypads.");
+-#endif
++#endif // UDEV_ENABLED
++
+ input = in;
+ monitor_joypads_thread.start(monitor_joypads_thread_func, this);
+ joypad_events_thread.start(joypad_events_thread_func, this);
+--- a/platform/linuxbsd/x11/display_server_x11.cpp
++++ b/platform/linuxbsd/x11/display_server_x11.cpp
+@@ -5449,7 +5449,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
+ }
+ #else
+ #ifdef XKB_ENABLED
+- xkb_loaded = true;
++ bool xkb_loaded = true;
+ #endif
+ #endif
+
+@@ -5476,6 +5476,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
+
+ r_error = OK;
+
++#ifdef SOWRAP_ENABLED
+ {
+ if (!XcursorImageCreate || !XcursorImageLoadCursor || !XcursorImageDestroy || !XcursorGetDefaultSize || !XcursorGetTheme || !XcursorLibraryLoadImage) {
+ // There's no API to check version, check if functions are available instead.
+@@ -5484,6 +5485,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
+ return;
+ }
+ }
++#endif
+
+ for (int i = 0; i < CURSOR_MAX; i++) {
+ cursors[i] = None;