Commit Graph

558 Commits

Author SHA1 Message Date
Yuri Sizov 1610fc2ae7 Merge pull request #78539 from EIREXE/input-info
Add the ability to get per-platform information for joypads
2023-08-03 22:37:45 +02:00
Álex Román Núñez 3aa340d081 Add the ability to get per-platform information for joypads.
This adds the ability for games to obtain platform-specific information about joypads such as their vendor/product ID, their XInput gamepad index or the real name of the device before it gets swapped out by the gamecontrollerdb's name.

This PR also includes a rebased version of #76045, this is because this PR is intended to be mainly to help people implementing Steam Input, as having the gamepad index is essential.
2023-08-02 22:30:30 +02:00
Markus Sauermann 8c1ce404d7 Fix crash on Windows when closing `Window`
Send `WINDOW_EVENT_MOUSE_EXIT` when a window is destroyed.

Ensure, that on Windows, the event_callback is still valid during
destroying the `Window`.
2023-08-02 00:17:25 +02:00
Hendrik Brucker 7e21eb7e00 Extract and reorganize texture resource classes 2023-07-14 20:04:21 +02:00
Yuri Sizov 1da09fd477 Merge pull request #79062 from MewPurPur/svg-optimizations
Optimize SVG icons and remove unused Transpose icon
2023-07-12 21:02:53 +02:00
Yuri Sizov ff689003a5 Merge pull request #77993 from bruvzg/key_lbl_from_p
Implement DisplayServer.keyboard_get_label_from_physical method.
2023-07-12 21:02:37 +02:00
Yuri Sizov 55b74c7cdf Merge pull request #76045 from Eoin-ONeill-Yokai/steaminput-fix
Prevent double input events on gamepad when running through steam input
2023-07-12 17:16:36 +02:00
Yuri Sizov 661c3954a6 Merge pull request #73443 from akien-mga/unbundle-openxr
Allow unbundling OpenXR (for Linux distros)
2023-07-12 17:15:25 +02:00
Yuri Sizov 2b47f6715e Merge pull request #78437 from bruvzg/set_icon
Add error checks and harmonize behavior of the `set_icon` method.
2023-07-12 15:09:14 +02:00
Yuri Sizov 6960a1d0e8 Merge pull request #78248 from felaugmar/load-svg-adjustable-scale
Added `Image::load_svg_from_(buffer|string)`
2023-07-12 15:09:03 +02:00
Rémi Verschelde 5dbbdaf27b
Merge pull request #79284 from akien-mga/fix-linux-os-move_to_trash
Fix Linux `move_to_trash` wrongly reporting files as not found
2023-07-11 11:30:21 +02:00
Rémi Verschelde a6e75f3971
Fix Linux `move_to_trash` wrongly reporting files as not found
We can't rely on the error code from `gio` or `kioclient5`, in my
rudimentary testing they return `1` for both missing files and other
situations like not having a Trash can on the mounted volume.

Fixes #79108.
2023-07-11 09:55:27 +02:00
Eoin O'Neill 8de98dbf21 Prevent double input events on gamepad when running through steam input
During GDC and general testing on Steam Deck units, we found that single
gamepads would often register inputs twice under certain circumstances.
This was caused by SteamInput creating a new virtual device, which Godot
registers as a second gamepad. This resulted in two gamepad devices
reporting the same button presses, often leading to buggy input response
on games with no multi-device logic and other-wise could cause intended
Steam rebindings to not work as intended (for example, swapping o and x
on a playstation pad if that feature isn't supported by the game.)

SDL gets around this by taking in a list of devices that are to be
ignored. When valve sees a controller that wants to be rebound via
SteamInput, they push a new VID/PID entry onto the environment
variable `SDL_GAMECONTROLLER_IGNORE_DEVICES` for the original gamepad
so that all game inputs can be read from the virtual gamepad instead.

This leverages the same logic as we are already using SDL gamepad
related HID mappings.
2023-07-10 15:26:33 -07:00
Rémi Verschelde dcd16a5750
Linux: Fix build with `use_sowrap=no` and various warnings/errors 2023-07-10 14:34:01 +02:00
Rémi Verschelde 79b31a8357
Merge pull request #79105 from akien-mga/linux-libsquish-lacks-pkgconfig
Linux: Link libsquish directly when unbundling, .pc file unreliable
2023-07-08 18:22:18 +02:00
MewPurPur fe194f8db0 Optimize SVG icons and remove unused Transpose icon 2023-07-07 17:58:15 +03:00
Rémi Verschelde f1e63b808a
Merge pull request #79101 from akien-mga/linux-unbundle-brotli
Linux: Allow unbundling brotli to use system library
2023-07-07 08:35:44 +02:00
Rémi Verschelde b3b4f4c1c9
Linux: Link libsquish directly when unbundling, .pc file unreliable 2023-07-06 15:32:42 +02:00
Rémi Verschelde 153c4a4c4f
Linux: Allow unbundling brotli to use system library 2023-07-06 15:26:38 +02:00
Rémi Verschelde 81064cc239
Doctool: Remove version attribute from XML header
We don't use that info for anything, and it generates unnecessary diffs
every time we bump the minor version (and CI failures if we forget to
sync some files from opt-in modules (mono, text_server_fb).
2023-07-06 10:08:21 +02:00
Rémi Verschelde 346f1ab86b
Bump version to 4.2-dev
Keep on waitin'
2023-07-05 22:07:03 +02:00
bruvzg 9c5a0c6c10
Add error checks and harmonize behavior of the set_icon method. 2023-07-03 13:48:28 +03:00
Felipe Augusto Marques 26eb3db234 Added Image's `load_svg_from_(buffer|string)`
No core dependency to the svg module.
2023-06-23 00:43:43 -03:00
Rémi Verschelde 90446fe9f3
SCons: Move platform logo/run icon to `export` folder
Follow-up to #75932.
Since these icons are only used by the export plugin, it makes sense to
move them and generate the headers there.

The whole `detect.is_active()` logic seems to be a leftover from before
times, as far back as 1.0-stable it already wasn't used for anything.

So I'm removing it and moving the export icon generation to
`platform_methods`, where it makes more sense.
2023-06-20 13:16:37 +02:00
Rémi Verschelde 356a602186
Merge pull request #74511 from AThousandShips/win_cursor_fix
Fix clearing custom cursor
2023-06-20 00:00:57 +02:00
Rémi Verschelde 01e84b1da1
Merge pull request #67158 from amoriqbal/fix_error_message
Fix the conditions for firing 'No such file or directory' error on Linux `move_to_trash`
2023-06-19 10:26:50 +02:00
Rémi Verschelde 34a07b81ae
Allow unbundling OpenXR (for Linux distros)
Copy XrMatrix4x4f_CreateProjectionFov to our OpenXRUtil, instead of relying
on a private header.
2023-06-16 16:25:04 +02:00
bruvzg 28db3c7158 [DisplayServer] Add method to check if native window is focused. 2023-06-16 10:27:52 +03:00
Danil Alexeev 2d2b2cadfa
Fix `bsd` feature tag includes only "other BSDs" 2023-06-15 16:25:18 +03:00
RedworkDE 5c57b3aba4 Fix docs after renaming export option 2023-06-12 23:59:55 +02:00
Rémi Verschelde 54a8adfd50
Merge pull request #75984 from KoBeWi/ConsoleMcWrap
Rename console script to wrapper
2023-06-12 22:54:24 +02:00
Rémi Verschelde 9e4315bb50
Style: Harmonize header includes in platform ports
This applies our existing style guide, and adds a new rule to that style
guide for modular components such as platform ports and modules:

Includes from the platform port or module should be included with relative
paths (relative to the root folder of the modular component, e.g.
`platform/linuxbsd/`), in their own section before Godot's "core" includes.

The `api` and `export` subfolders also need to be handled as self-contained
(and thus use relative paths for their "local" includes) as they are all
compiled for each editor platform, without necessarily having the api/export
matching platform folder in the include path.
E.g. the Linux editor build will compile `platform/android/{api,export}/*.cpp`
and those need to use relative includes for it to work.
2023-06-08 15:19:19 +02:00
bruvzg 08e8ff371d
Implement keyboard_get_label_from_physical method. 2023-06-08 10:13:31 +03:00
Rémi Verschelde 2ae5a0704a
X11: Fix vformat ambiguous int types for GCC 10 (again) 2023-06-07 14:57:51 +02:00
MJacred 2c5e2196bd Replace get_rendering_device() call to prevent crashes on OpenGL.
And make OpenGL video adapter info align with Vulkan.
2023-06-06 23:29:36 +02:00
Rémi Verschelde 0010b34a37
Merge pull request #75099 from mxnemu/add-default-x11-error-handler
[Linux/X11] Add a default error handler for X11 to avoid crashes.
2023-06-05 18:04:49 +02:00
nee b13c82e964 [Linux/X11] Add a default error handler for X11 to avoid crashes.
The default behaviour for X11 is to crash even on non-fatal errors
when there is no error handler set. This change allows the window to
stay open and may enable users to save their work when things go
wrong.

This acts as a workaround for #65425 and #68471
2023-06-05 17:28:21 +02:00
bruvzg e15f37945b
[Linux/TTS] Cache TTS voice list. 2023-06-02 14:00:52 +03:00
Yuri Sizov c670c4334a
Merge pull request #65902 from MJacred/editor/copysysteminfo
Add an editor option to copy system info to clipboard
2023-05-27 20:11:54 +02:00
MJacred 9e5bf3d589 Copy system info to clipboard + Update bug_report.yml
plus minor static-related fixes
* linuxbsd: get_systemd_os_release_info_value() -> static breaks usage if used multiple times
* windows/linuxbsd: get_video_adapter_driver_info() writes info into static
* linuxbsd: get_distribution_name() + get_version() -> write bsd fallback into static variable
* windows/uwp/android: remove unnecessary use of static
2023-05-27 18:21:23 +02:00
Riteo 51dfdfab96 Build `JoypadLinux` sandbox detection method only with udev
Fixes an `unused-function` warning when building with `udev=no`.
2023-05-25 04:47:43 +02:00
Rémi Verschelde 9dc286967f
X11: Fix vformat ambiguous int types for GCC 10
The build would fail with GCC 10 from our Linux SDK used for official builds.
2023-05-23 11:27:28 +02:00
bruvzg 5b9984b5a2
Add `audio/general/text_to_speech` project setting to enable/disable TTS. 2023-05-18 20:16:03 +03:00
Rémi Verschelde 265c70a369
Merge pull request #75142 from bruvzg/scr
[DisplayServer] Implement screen_get_image method for LinuxBSD/X11, macOS and Windows.
2023-05-16 10:48:16 +02:00
Rémi Verschelde 788cb74cc6
Linux: Don't use udev for joypad hotloading when running in a sandbox
udev doesn't work in sandboxes, notably the new Steam container runtime
as found notably on the Steam Deck, and in Flatpak/Snap packages.

Like SDL does, when we detect such a containerized environment, we fall
back to parsing `/dev/input` directly.
See smcv's comments in #76879 for details.

Fixes #76879.
2023-05-12 11:30:16 +02:00
Rémi Verschelde 258fabdbb3
Merge pull request #76836 from Faless/tls/system_certs
[TLS] Add support for platform-specific CA bundles.
2023-05-12 11:17:31 +02:00
Rémi Verschelde 1c07717d3e
Merge pull request #76974 from dsnopek/linuxbsd-feature-tags
Fix 'linux' and specific BSD feature tags
2023-05-12 10:06:08 +02:00
Rémi Verschelde 03053eaf19
Merge pull request #76957 from Riteo/dbus-check
Check DBus loading status before attempting to detect its version
2023-05-12 10:04:33 +02:00
Fabio Alessandrelli 6fd9982358 [TLS] Add support for platform-specific CA bundles.
Adds a new OS::get_system_ca_certs method which can be implemented by
platforms to retrieve the list of trusted CA certificates using OS
specific APIs.

The function should return the certificates in PEM format, and is
currently implemented for Windows/macOS/LinuxBSD(*)/Android.

mbedTLS will fall back to bundled certificates when the OS returns no
certificates.

(*) LinuxBSD does not have a standardized certificates store location.
    The current implementation will test for common locations and may
    return an empty string on some distributions (falling back to the
    bundled certificates).
2023-05-12 09:58:23 +02:00
David Snopek 87fcee2d7f Fix 'linux' and specific BSD feature tags 2023-05-11 16:58:52 -05:00