virtualx-engine/platform/linuxbsd
Dalton Lang 8a2e4409e6 [X11] Partial Fix Godot Editor and Project Manager steals focus on a window manager on Linux
This is a workaround for the most critical portion of the WM focus bug
described in #68305. On some specific X11 WM configurations, the
editor's main window and any popups it creates will fight for focus,
which causes a total system lockup due to mouse and keyboard input being
stolen as well. Getting out of this infinite loop requires force
restarting the system.

It can be tested with the following shell script:

```bash
	!#/bin/sh

	godot4 &
	sleep 30
	pkill -x godot4
```

The workaround identified in #68305 is to remove the call to
XSetInputFocus in the ConfigureNotify event handler, so I have removed
the conditional block that calls this as well as the setup code above it
since there is no need to allocate the memory for the variables if they
won't be used in that call anymore.

This is just a hack and is not a complete fix for #68305. Multiple
developers are collaborating on a proper fix in the discussion in that
issue, but time is a valuable resource that no one has enough of, so I
am committing this workaround as a stop-gap to prevent the most critical
problem while we work on a full solution for the underlying cause.
2024-02-05 17:00:24 -06:00
..
doc_classes Doctool: Remove version attribute from XML header 2023-07-06 10:08:21 +02:00
export Add Wayland support 2024-01-30 16:44:47 +01:00
wayland Merge pull request #87764 from Riteo/wayland-native-handle 2024-01-31 14:01:59 +01:00
x11 [X11] Partial Fix Godot Editor and Project Manager steals focus on a window manager on Linux 2024-02-05 17:00:24 -06:00
crash_handler_linuxbsd.cpp Made signal handling more uniform. Fixes #82102 2023-09-22 20:06:58 -06:00
crash_handler_linuxbsd.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
dbus-so_wrap.c [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
dbus-so_wrap.h [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
detect.py Wayland: disable backend at build-time if wayland-scanner is missing 2024-01-31 02:08:33 +01:00
fontconfig-so_wrap.c [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
fontconfig-so_wrap.h [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
freedesktop_portal_desktop.cpp [Native File Dialog] Add support for adding custom options to the dialogs. 2024-01-24 15:00:31 +02:00
freedesktop_portal_desktop.h [Native File Dialog] Add support for adding custom options to the dialogs. 2024-01-24 15:00:31 +02:00
freedesktop_screensaver.cpp Check DBus loading status before attempting to detect its version 2023-05-11 19:29:10 +02:00
freedesktop_screensaver.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
godot_linuxbsd.cpp [Drivers,Platform] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-12 20:13:32 +02:00
joypad_linux.cpp [Linux/Freedesktop] Implement native file selection dialog support. 2023-08-17 10:56:16 +03:00
joypad_linux.h Style: Harmonize header includes in platform ports 2023-06-08 15:19:19 +02:00
libudev-so_wrap.c [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
libudev-so_wrap.h [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
os_linuxbsd.cpp Add Wayland support 2024-01-30 16:44:47 +01:00
os_linuxbsd.h Add Wayland support 2024-01-30 16:44:47 +01:00
pck_embed.ld
pck_embed.legacy.ld
platform_config.h [macOS/Windows] Add optional ANGLE backed OpenGL renderer support. Add EGL_ANDROID_blob_cache caching. 2023-09-21 14:21:00 +03:00
platform_gl.h [X11] Add support for using EGL/GLES instead of GLX. 2023-10-04 14:15:36 +03:00
platform_linuxbsd_builders.py SCons: Format buildsystem files with psf/black 2020-03-30 09:05:53 +02:00
README.md Update all outdated online documentation links 2023-01-14 19:38:00 +03:00
SCsub Add Wayland support 2024-01-30 16:44:47 +01:00
speechd-so_wrap.c [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
speechd-so_wrap.h [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
tts_linux.cpp TTS_Linux: Fix size_t template issue on OpenBSD by using int consistently 2023-10-27 12:23:39 -04:00
tts_linux.h TTS_Linux: Fix size_t template issue on OpenBSD by using int consistently 2023-10-27 12:23:39 -04:00
xkbcommon-so_wrap.c [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00
xkbcommon-so_wrap.h [X11] Add support for dead keys without active IME. Fix IME focus and cleanup. 2023-01-30 13:31:48 +02:00

Linux/*BSD platform port

This folder contains the C++ code for the Linux/*BSD platform port.

See also misc/dist/linux folder for additional files used by this platform.

Documentation

Artwork license

logo.png is derived from the Linux logo:

Permission to use and/or modify this image is granted provided you acknowledge me lewing@isc.tamu.edu and The GIMP if someone asks.