Age | Commit message (Collapse) | Author |
|
-Rendering server now uses a split RID allocate/initialize internally, this allows generating RIDs immediately but initialization to happen later on the proper thread (as rendering APIs generally requiere to call on the right thread).
-RenderingServerWrapMT is no more, multithreading is done in RenderingServerDefault.
-Some functions like texture or mesh creation, when renderer supports it, can register and return immediately (so no waiting for server API to flush, and saving staging and command buffer memory).
-3D physics server changed to be made multithread friendly.
-Added PhysicsServer3DWrapMT to use 3D physics server from multiple threads.
-Disablet Bullet (too much effort to make multithread friendly, this needs to be fixed eventually).
|
|
Fix joystick axis mapping issues with NVIDIA shield. Probably others.
|
|
Issues addressed:
a) Axis mappings were including virtual mouse axes on NVIDIA Shield TV.
The virtual mouse axes have the same axis numbers as the normal analog stick numbers. This was completely breaking joypad support on NVIDIA Shield TV.
b) Joypads were being tracked in a List with the index in the list being treated as the Godot device id.
If a device were to be removed, any device later in the list would be shifted, potentially causing future events with the shifted joypads to have incorrect IDs according to the Godot engine.
c) Unnecessary events were being sent to the Godot engine.
A check was added (per Joystick) that will prevent sending events for all axes when only a single axis value changed.
A similar check was added for "HATs".
See #45712
|
|
|
|
Bug introduced in #45679.
Fixes part of #45816.
|
|
|
|
Improve the logic to compile for Android
|
|
[HTML5] Better editor persistent folders, automatically open zip import popup
|
|
We used to only persist specific sub-folder of /home/web_user/ when
running the Web Editor. This resulted in bad UX about default project
creation path etc.
This PR makes the whole folder persistent, move the zip preloading to a
different folder (to avoid persisting it), and automatically prompt the
user to import it if present.
|
|
[4.0] [iOS] Additional 'linker_flags' plugin parameter
|
|
If 'Launch Screen' storyboard is present it will be used as loading screen.
|
|
|
|
Using any remote notification method (even indirectly) causes App Store to trigger APNS warning email.
|
|
This is meant for users making custom builds to match the options used on
optimized, official builds.
This enables, on the platforms which support them:
- `use_static_cpp=yes` (portable binaries for Linux and Windows)
- `use_lto=yes` (link time optimizations - note: requires a lot of RAM!)
- `debug_symbols=no` (no debug symbols, smaller binaries)
Also abort when using MSVC with `production=yes`, as:
- It cannot optimize the GDScript VM like GCC or Clang do, leading to
significant performance drops.
- Its LTO support is unreliable, at least used to trigger crashes last
we tried it extensively.
All options can still be overridden if specified, and the `dev=yes` option
was changed to also support overrides.
|
|
The canvas_id is `#`-prefixed to work with emscripten as a CSS selector.
When comparing to an event target ID (e.g. when checking if the canvas
is fullscreen, or is locking the mouse) we need to skip the first char
(the hash).
|
|
[4.0] [iOS] Earlier plugin initialization
|
|
add search extensions for Scons' path
|
|
Linux: Enable udev support by default
|
|
This enables `-static-libgcc -static-libstdc++` which help make custom Linux
builds more portable (official builds have been using this option for years).
For some obscure reason Ubuntu 18.04 i386 crashes when using the option for
i386 builds, so let's play it safe and enable for x86_64 only for now.
|
|
This has been enabled for years in official binaries, and users making custom builds
may end up not enabling it unknowingly, so it's best if we default to the same as
what official builds do.
The original reason for having it opt-in was likely the addition of a dependency on
libudev, but that should be fairly ubiquitous by now.
|
|
Initialize iOS plugins before 'Main::setup' call to have access to them in script's '_init' function.
|
|
Modernize Thread
|
|
|
|
- Based on C++11's `thread` and `thread_local`
- No more need to allocate-deallocate or check for null
- No pointer anymore, just a member variable
- Platform-specific implementations no longer needed (except for the few cases of non-portable functions)
- Simpler for `NO_THREADS`
- Thread ids are now the same across platforms (main is 1; others follow)
|
|
|
|
http_escape and percent_encode have been unified into uri_encode, and http_unescape and percent_decode have been unified into uri_decode.
|
|
POSIX systems: go through all event devices, not just event[0-32]
|
|
There are no guarantees that joypads are in event0-event32
range. Some devices, such as laptops with detachable keyboards
and wacom can reserve events all the way up to 32.
Some udev rules with e.g. custom controller firmwares may
load the device as /dev/input/eventX, where X is greater than
32.
This patch uses POSIX dirent to enumerate the event devices, so
entries outside 0-32 range are not skipped.
|
|
Moved AppDelegate push notifications methods implementation to 'GODOT_ENABLE_PUSH_NOTIFICATIONS'
which can be used in plugins to implement APNS plugins.
|
|
[4.0] [iOS] iOS Plugins Migration
|
|
Add separate `simulator` flag for iOS build, change main library to `xcframework`.
|
|
We don't want browsers to cache our temporary exports (since they will
always differ).
|
|
Side and GDNative libraries are now added by engine.js , the dynlink pre
js had been deleted.
|
|
|
|
Modernize RWLock
|
|
- Based on C++14's `shared_time_mutex`
- No more need to allocate-deallocate or check for null
- No pointer anymore, just a member variable
- Platform-specific implementations no longer needed
- Simpler for `NO_THREADS`
|
|
|
|
|
|
No longer use emscripten functions for gamepads, implement them as
library functions in library_godot_display.js instead.
This allows us to do a better job at "guessing" vendorId, productId, OS,
etc. thus allowing us to better find the remapping for the controller.
|
|
`xcframework` format.
|
|
|
|
|
|
|
|
|
|
Split OS::execute into two methods
|
|
Simplify helper functions, fix env/sys_env confusion and depends for
externs and pre-js.
|
|
|
|
1. execute(): Executes a command and returns the results.
2. create_process(): Creates a new process and returns the new process' id.
|
|
|
|
|