Commit Graph

1077 Commits

Author SHA1 Message Date
1667e6fcce Merge pull request #113195 from teromene/master
Include xkb-compose in `wayland_thread.h`
2025-11-26 23:44:49 +01:00
b8ef67586d Include xkb-compose in wayland_thread.h. Fixes builds without SOWRAP_ENABLED 2025-11-26 16:00:08 +01:00
69ff129e33 Fix error message when closing the project manager on Wayland 2025-11-26 11:16:08 -03:00
0ebb11041b Merge pull request #113138 from deralmas/embedder-oopsies
Wayland: Fix Wayland driver in export templates
2025-11-25 07:06:59 -06:00
8fb195e20d Wayland: Fix Wayland driver in export templates
I might have accidentally put the socket connection logic inside a
`TOOLS_ENABLED` `#ifdef` xD
2025-11-25 03:36:16 +01:00
e1b3387513 Merge pull request #108704 from wjt/xdg-portal-inhibit
Support XDG Inhibit portal
2025-11-24 15:59:56 -06:00
7477823ad5 Merge pull request #113068 from deralmas/writing-with-style
Wayland: Implement compose and dead key support
2025-11-24 10:21:31 -06:00
8ced63315a Wayland: Implement compose and dead key support 2025-11-22 23:30:23 +01:00
4dd5c83f72 Wayland: compile with libdecor=no 2025-11-22 08:29:05 +00:00
235a32ad11 Merge pull request #113023 from dsnopek/tracy-framemark-on-linux
Correctly mark frame start for profilers (Tracy/Perfetto) on Linux
2025-11-21 18:37:40 -06:00
cb7d00efad Correctly mark frame start for profilers (Tracy/Perfetto) on Linux 2025-11-21 14:59:55 -06:00
6145b0ca29 Add Image.load_exr_from_buffer and enable tinyexr by default 2025-11-21 18:58:26 +01:00
688a6d02b2 Merge pull request #107435 from deralmas/wl-proxy
Wayland: Implement game embedding
2025-11-20 11:10:51 -06:00
bbf65ae72f Wayland: Implement game embedding
This patch introduces a new protocol proxy, which multiplxes Wayland
clients into a single connection, allowing us to redirect calls (e.g.
create toplevel -> create subsurface). Mixed with some state tracking
and emulation, we can embed a full-featured client into the editor.
2025-11-19 21:24:18 +01:00
2135cb1707 Merge pull request #103749 from Rindbee/fix-cannot-input-after-restarting-the-input-method-on-x11
Fix cannot input Chinese after restarting the input method on X11
2025-11-19 11:03:58 -06:00
1a3a254e26 Support XDG Inhibit portal
Previously, on Linux and BSD, inhibiting the screensaver was handled
using the org.freedesktop.ScreenSaver D-Bus API. Unfortunately, this API
is not available in a Flatpak sandbox. (This is because there is a
desire to tie inhibit sessions to a specific app and visible window; but
the org.freedesktop.ScreenSaver API does not support this.)

As a result, when using the Flatpak build of the Godot Editor (or a
Flatpak-ed build of a game) and using a controller to play a game, the
session will become idle after a few minutes.

The XDG desktop portal -- which is already used for color-picking, file
choosing, and querying the system theme -- has an Inhibit interface that
provides a superset of the functionality of the
org.freedesktop.ScreenSaver API, and is available to any sandboxed app.

Refactor code for making XDG portal requests that was previously
duplicated for the FileChooser and ColorPicker portal code. Check the
portal version to determine whether these portals can be used:

- FileChooser portal version 3 is required due to the use of the
  "directory" parameter.

- On the Settings portal, the only addition in version 2 is the
  ReadOne() method which is not used here, so version 1 suffices.

- On the Screenshot portal, the only addition in version 2 is the
  "interactive" parameter to the Screenshot() method; this code only
  uses the PickColor() method, so version 1 suffices.

Then, add support for the Inhibit portal. Use it if available and if
running in a sandbox. Prefer to use org.freedesktop.ScreenSaver if not
running in a sandbox, even if the portal is available, because (at least
in the GNOME 43 implementation of the portal) it does not work correctly
if the portal cannot map the request to a running app. This adds a small
amount of complexity to the implementation, but supporting both APIs is
necessary anyway (there are many systems in the wild that support
org.freedesktop.ScreenSaver but not the desktop portal).

Fixes https://github.com/godotengine/godot/issues/108634
2025-11-17 11:46:28 +01:00
e46c2ea3fa Merge pull request #112379 from bruvzg/tts64id
Make `utterance_id` 64-bit.
2025-11-14 14:23:17 -06:00
04bc282ae7 Merge pull request #104851 from Ivorforce/tracy
Add `profiler` option to `SCons` builds, with support for `tracy` and `perfetto`.
2025-11-12 11:24:15 -06:00
5cb5eb59f9 Fix Chinese characters were not displayed correctly in DBusMessage
On OS with Chinese locale, you might receive the following message
when running an editor using the `--verbose` option:

```
ERROR: Error on D-Bus communication: æªæ	¾å°è¯·æ±ç
                                                         设置
   at: read_setting (platform/linuxbsd/freedesktop_portal_desktop.cpp:144)
```
2025-11-11 08:18:07 +08:00
c3747884da Add some important profiling hooks. 2025-11-08 00:08:48 +01:00
e80194e31f Add profiler option to SCons builds.
Add `tracy` option to `profiler`. If set, a tracy profiling client will be injected into the Godot binary.

# Conflicts:
#	platform/linuxbsd/godot_linuxbsd.cpp
2025-11-08 00:08:45 +01:00
281c74550a Make utterance_id 64-bit. 2025-11-07 10:21:20 +02:00
2d7380c3ff Merge pull request #111493 from deralmas/racing-the-thread
Wayland: Defer event thread initialization to late initialization
2025-11-06 08:13:13 -06:00
90cab74af9 Merge pull request #110248 from KoBeWi/unexpected_include_hell
Misc cleanup in EditorExportPlatform
2025-11-04 16:32:39 -06:00
c5e6fde0c7 Merge pull request #112142 from timothyqiu/motif-wm-hints
X11: Fix minimize/maximize buttons can't be hidden
2025-11-04 16:32:24 -06:00
286e578b02 [Linux] Add SSE4.2 support runtime check. 2025-11-01 12:48:10 +02:00
1c1c3200e4 Misc cleanup in EditorExportPlatform 2025-10-29 22:25:37 +01:00
48575336e8 X11: Fix minimize/maximize buttons can't be hidden 2025-10-29 19:37:23 +08:00
af77ae8137 Merge pull request #111874 from deralmas/not-so-fast
Wayland: Set window parent before commit
2025-10-28 10:15:29 -05:00
4df96fc7ab Wayland: Set window parent before commit
Fixes a timing issue where dialogs got configured right before having
their parent set. This gave compositors the time to resize/rearrange the
dialog as if it were a normal window, only to be marked as "floating"
right away. On niri, this manifested as huge dialog windows.

This is achieved with the addition of a `p_parent_id` parameter to
`window_create`, akin to its popup counterpart.

`window_create` now also accepts a single `Size2i` parameter instead of
two integers, in line with the rest of the `WaylandThread` API. The
original idea was to have a very "barebones" API, akin to the `drivers/`
directory, but that didn't pan out.
2025-10-28 04:10:28 +01:00
685fa3281c Merge pull request #111580 from timothyqiu/x11-fullscreen
X11: Fix fullscreen exit behavior
2025-10-27 10:01:52 -05:00
1e8ead50dc Use pkg-config for recast flags
Now that recastnavigation upstream ships a pkg-config file, Godot can
rely on it for getting the build-time configuration.
2025-10-25 15:52:41 +02:00
0caf8057a7 Merge pull request #108412 from wjt/push-qmklovyxnnom
linux/bsd/mac: Use pkill to stop remote instance over SSH
2025-10-23 11:03:57 -05:00
cf21565c77 [X11] Fix keyboard_get_label_from_physical errors when used on key without label. 2025-10-18 19:25:55 +03:00
f3ebee1f79 Merge pull request #111211 from superherointj/enet-warning
System-provided ENet warning
2025-10-16 12:48:07 -05:00
66e5bce653 X11: Fix memory leak in screen_get_refresh_rate 2025-10-14 20:30:05 +08:00
0f81e8c7fe X11: Fix fullscreen exit behavior 2025-10-13 15:03:13 +08:00
7680190768 Revert "Fix the sliding window problem in linux occur due to reparenting of the window during the decoration via tracking the parent of the window"
This reverts commit 932afc3bf5.
2025-10-13 15:03:13 +08:00
ab205a78ce Wayland: defer event thread initialization to late initialization
This race condition made me pull my hair. `wl_display_roundtrip` has its
own little event loop, which apparently conflicts hard with the
always-running event loop thread.

I kinda assumed that it would be thread-safe thanks to its internal
`wl_display_prepare_read` call that the docs talk about but that's
clearly not enough.

Luckily this method is called very few times and the only dangerous
instances are in the initialization routine, which first starts the
thread and then does various roundtrips. Libdecor has also some internal
roundtrips of its own which would often fail. Starting the thread after
all initialization fixes the issue.

Tested this by spamming *lots* of `wl_display_roundtrip` in
`WaylandThread::init()` with and without this fix.
2025-10-10 23:25:00 +02:00
4ea49aecaf Merge pull request #110990 from timothyqiu/x11-min-max
X11: Fix minimization of maximized windows
2025-10-10 10:26:02 -05:00
0a584250ae Fix: Libgodot build on Linux. 2025-10-10 04:31:14 -05:00
7c033002b0 Merge pull request #110863 from kisg/libgodot_migeran_core
LibGodot: Core - Build Godot Engine as a Library
2025-10-08 13:56:34 -05:00
24f23c5cdb System-provided ENet warning
Warning from documentation: https://github.com/godotengine/godot/tree/master/thirdparty#enet
2025-10-08 08:51:09 -03:00
9052d31c68 Merge pull request #111331 from Repiteo/scons/revert-cppextpath
Revert "SCons: Add `CPPEXTPATH` for external includes"
2025-10-07 13:07:19 +02:00
a6e44be2dc Merge pull request #105587 from deralmas/framing-this-moment
Wayland: Emulate frame event for old `wl_seat` versions
2025-10-07 13:06:47 +02:00
6c44c80c62 LibGodot: Core - Build Godot Engine as a Library
* Add a new GodotInstance GDCLASS that provides startup and iteration commands to control a Godot instance.
* Adds a libgodot_create_godot_instance entry point that creates a new Godot instance and returns a GodotInstance object.
* Adds a libgodot_destroy_godot_instance entry point that destroys the Godot instance.

Sample Apps: https://github.com/migeran/libgodot_project

Developed by [Migeran](https://migeran.com)

Sponsors & Acknowledgements:

* Initial development sponsored by [Smirk Software](https://www.smirk.gg/)
* Rebasing to Godot 4.3 and further development sponsored by [Xibbon Inc.](https://xibbon.com)
* The GDExtension registration of the host process & build system changes were based
  on @Faolan-Rad's LibGodot PR: https://github.com/godotengine/godot/pull/72883
* Thanks to Ben Rog-Wilhelm (Zorbathut) for creating a smaller, minimal version for easier review.
* Thanks to Ernest Lee (iFire) for his support

Co-Authored-By: Gabor Koncz <gabor.koncz@migeran.com>
Co-Authored-By: Ben Rog-Wilhelm <zorba-github@pavlovian.net>
2025-10-07 02:15:41 +02:00
b17aa3343a Revert "SCons: Add CPPEXTPATH for external includes" 2025-10-06 13:09:22 -05:00
5935a32e32 Core: Cleanup headers in core/config
- `MainLoop` now forward-declared in `OS`
2025-10-06 09:20:56 -05:00
d1d28c0bcf Merge pull request #111223 from Ivorforce/remove-iterator-include
Replace `std::size` usage with `std_size` to avoid `<iterator>` include.
2025-10-06 09:06:49 -05:00
ead282ff13 Remove file_access.h and script_backtrace.h includes from logger.h. 2025-10-05 17:49:23 +09:00