Commit graph

3266 commits

Author SHA1 Message Date
robfram
2c8014e565 Exclude atomic lib under FreeBSD using LLVM 2021-10-29 18:24:57 +02:00
Rémi Verschelde
14ef65e49b
Merge pull request #54348 from akien-mga/3.x-clang-format-dont-align-operands 2021-10-28 15:43:15 +02:00
Rémi Verschelde
87c80f529f
clang-format: Enable BreakBeforeTernaryOperators
clang-format keeps breaking the way it handles break *after* ternary operators,
so I give up and go with the only style they seem to actually test.
2021-10-28 14:50:33 +02:00
Rémi Verschelde
1b65550ec7
clang-format: Various fixes to comments alignment from clang-format 13
All reviewed manually and occasionally rewritten to avoid bad auto formatting.
2021-10-28 14:50:32 +02:00
Rémi Verschelde
42d385b312
clang-format: Disable alignment of operands, too unreliable
Sets `AlignOperands` to `DontAlign`.

`clang-format` developers seem to mostly care about space-based indentation and
every other version of clang-format breaks the bad mismatch of tabs and spaces
that it seems to use for operand alignment. So it's better without, so that it
respects our two-tabs `ContinuationIndentWidth`.
2021-10-28 13:23:38 +02:00
Aaron Franke
18b1de1983
[3.x] Add RISC-V to "server" platform 2021-10-27 13:57:37 -05:00
PouleyKetchoupp
2a638a9cdf Add X11 events logging for debug purpose
Compiled out by default, just to be used for debugging local builds.
2021-10-27 10:37:46 -07:00
PouleyKetchoupp
874c9ae89a Fix input events random delay on X11
The new system based on a thread gathering events from the X11 server
was causing delays in some scenarios where some events have just been
missed at the time of processing and we're waiting for a whole frame to
check them again.

Solved by flushing again and checking for pending events at the
beginning of the process loop, in addition to events already gathered
on the event thread.
2021-10-27 10:19:16 -07:00
Rémi Verschelde
c7f4e1d5dd
Android: Properly validate godot_project_name_string for Android special chars
Fixes #52659.

(cherry picked from commit 9204a3a50e)
2021-10-26 18:23:47 +02:00
Marcel Admiraal
4febf69f2a
Fix Gradle builds not excluding excluded tasks
(cherry picked from commit f80cb4dffa)
2021-10-24 01:43:44 +02:00
Rémi Verschelde
f5e6a2624c
JS: Bump ansi-regex version for linter
Silences warning about a moderate security vulnerability (which doesn't affect us).

(cherry picked from commit 5f7bbc2b57)
2021-10-23 12:04:17 +02:00
Aaron Franke
5659120af3
[3.x] Add support for the RISC-V architecture
Supports RV64GC (RISC-V 64-bit with general-purpose and compressed-instruction extensions)
2021-10-22 12:51:23 -05:00
Rémi Verschelde
ae5cdf3b86
Merge pull request #53991 from Faless/js/3.x_gles3_editor 2021-10-20 10:40:46 +02:00
Fabio Alessandrelli
3a61d0990e [HTML5] Editor video driver option. Replace canvas on exit.
Default is "Auto", but can be forced to a specific WebGL version if the
automatic detection fails.

The game and editor canvas are now replaced with a new one in the exit
hooks. This helps the browser do some context cleanup, and allow us to
create a new context of a different type (WebGL/WebGL2).

Enable GLES3/WebGL2 in the Web Editor.
2021-10-19 15:52:02 +02:00
Rémi Verschelde
da5c843bd1
Merge pull request #53986 from madmiraal/remove-unused-variables-3.x 2021-10-19 12:18:21 +02:00
Marcel Admiraal
fe9fd5c5ce Remove unused variables 2021-10-18 18:51:05 +01:00
Fabio Alessandrelli
11d1b0387e
[HTML5] Bump initial memory for Web editor
More memory is needed because the editor became bigger with the addition
of class reference translations.

(cherry picked from commit 1446cfd13d)
2021-10-18 16:09:04 +02:00
Ignacio Roldán Etchevery
24fb09614d iOS: Don't embed project static frameworks/libs
Previously, files added via `add_ios_project_static_libs` where
being added as embedded frameworks. This commit fixes that.

Static frameworks/libs should never be embedded into IPAs.
2021-10-17 22:30:09 +02:00
Rémi Verschelde
9657559b66
SCons: Set DEBUG_ENABLED and DEV_ENABLED in SConstruct
They're the same for all platforms so they don't need to be repeated in all
platform definitions.

(cherry picked from commit cd21cc683a)
2021-10-15 12:54:16 +02:00
Marcel Admiraal
fd942cd465
Upgrade Android Gradle to version 7.2
(cherry picked from commit 95b1275197)
2021-10-15 12:51:43 +02:00
ne0fhyk
754db65a1f
Pass the correct export_format argument to locate the assets directory when exporting.
(cherry picked from commit 431ccdb057)
2021-10-11 18:04:16 +02:00
Omar Polo
04c08d1f8c
use .get_file() instead of basename(3)
On OpenBSD the compiler complains that calling basename(3) would lose
const qualifier.  basename(3) is defined as

	char *basename(char *);

and can, accorgindly to the POSIX.1, modify the passed string.

This uses the .get_file() method.  The check is necessary because
file_name could be a directory, in which case .get_file() would return
an empty string.  The .get_base_dir().get_file() idiom is already used.

The usage of get_file() and the check were suggested by theraot, thanks!

(cherry picked from commit a3384b7461)
2021-10-10 12:27:51 +02:00
Rémi Verschelde
df69945f1f
Merge pull request #52714 from m4gr3d/provide_getter_for_project_data_dir_3x 2021-10-05 21:02:41 +02:00
Fabio Alessandrelli
adef4ed958 [HTML5] Remove "maximize" support.
I don't think anyone is actively using it, and it's a lot of convoluted
code.
2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
d61fc468a2 [HTML5] Refactor JS library listeners to OS. 2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
5e2e54a4b4 [HTML5] Refactor display/input JS library code. 2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
c54f5b90e6 [HTML5] Implement Pointer Lock API in JS library.
Removes more emscripten HTML5 library dependencies.
2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
89c6aaa96d [HTML5] Implement window blur in JS library.
Removes more emscripten HTML5 library dependencies.
2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
ac78e7f940 [HTML5] Implement fullscreenchange in JS library.
Removes more emscripten HTML5 library dependencies.
2021-10-05 15:13:41 +02:00
Fabio Alessandrelli
b7ac3c1aeb [HTML5] Implement mouse/touch/key events in JS library.
This makes us more independent from emscripten libraries, giving us more
control on the application lifecycle.
2021-10-05 15:13:41 +02:00
Rémi Verschelde
d01c660954
Merge pull request #52964 from Pineapple/WIN32_LEAN_AND_MEAN 2021-10-05 12:03:52 +02:00
Jordan Schidlowsky
db44406082
revert 0d7409a so additional error information prints in release builds
(cherry picked from commit b78d399f91)
2021-10-05 10:56:53 +02:00
Rémi Verschelde
e292d79fb3
SCons: Add DEV_ENABLED defines for target=debug builds
This will allow adding developer checks which will be fully compiled out in
user builds, unlike `DEBUG_ENABLED` which is included in debug tempates and
the editor builds.

This define is not used yet, but we'll soon add code that uses it, and change
some existing `DEBUG_ENABLED` checks to be performed only in dev builds.

Related to https://github.com/godotengine/godot-proposals/issues/3371.
2021-10-04 11:25:02 +02:00
Rémi Verschelde
7c9e06f936
Merge pull request #48686 from bruvzg/bundle_icon_3 2021-09-30 14:55:41 +02:00
Rémi Verschelde
b7901c773c
bullet: Sync with upstream 3.17
Stop include Bullet headers using `-isystem` for GCC/Clang as it misleads
SCons into not properly rebuilding all files when headers change.

This means we also need to make sure Bullet builds without warning, and
current version fares fairly well, there were just a couple to fix (patch
included).

Increase minimum version for distro packages to 2.90 (this was never released
as the "next" version after 2.89 was 3.05... but that covers it too).
2021-09-29 16:30:34 +02:00
Fabio Alessandrelli
acb748e66f
Merge pull request #52973 from selgesel/patch2
[3.x] Release pressed events when the window is blurred on HTML5 platform
2021-09-29 13:11:56 +02:00
Rémi Verschelde
bf65c0e479
HTML5: Fix minification error with Emscripten 1.39.9
It used an old vendored version of acorn.js which seems to choke on this
trailing comma. This is not a problem for more recent Emscripten versions.

We disable the `comma-dangle` check in ESLint to prevent this issue.

(cherry picked from commit 23b51a1708)
2021-09-29 10:54:01 +02:00
Selgesel
c918b4d246 [3.x] Release pressed events when the window is blurred on HTML5 platform 2021-09-23 16:44:03 +03:00
Bartłomiej T. Listwon
f463e612a1 Add missing WIN32_LEAN_AND_MEAN 2021-09-23 10:36:31 +02:00
bruvzg
131f913747
Improve OS::get_locale() on macOS and Windows, replace "-" with "_" and use system macros instead of bitwise AND. Add locale format info to the documentation.
(cherry picked from commit f797e1c078)
2021-09-21 20:33:11 +02:00
Ricardo Subtil
5167a0281a
Fix shell_open not returning errors on Windows
(cherry picked from commit c4787a8e6d)
2021-09-21 20:33:11 +02:00
Hugo Locurcio
8a6bc045ea
Add logo attribution for Android, HTML5 and Linux platform icons
- Tweak the Android platform logo to remove the Android wordmark,
  as it can't be used without explicit permission.

(cherry picked from commit 1513aa9b26)
2021-09-21 17:14:59 +02:00
Rémi Verschelde
c906afe045
HTML5: Handle GODOT_VERSION_STATUS env var in @GODOT_VERSION@
Follow-up to #51002.

(cherry picked from commit 16f49d4b29)
2021-09-21 17:14:58 +02:00
Rémi Verschelde
8a48be6980
Merge pull request #52650 from Faless/js/3.x_audioworklet_nothreads_pr
[3.x] [HTML5] Refactor audio drivers. Implement AudioWorklet w/o threads.
2021-09-21 10:44:14 +02:00
Rémi Verschelde
b37776fa2f
Merge pull request #52591 from timothyqiu/error-macros
[3.x] Remove do{ } while(0) wrapper around error macros
2021-09-21 10:38:34 +02:00
Fabio Alessandrelli
2024200182 [HTML5] Refactor audio drivers. Implement AudioWorklet w/o threads.
Performances are not great in general, bad on Firefox, on Chrome, well,
it's an improvement compared to the way they broke ScriptProcessorNode.

I'm actually surprised this works, it involves so many allocations, but
there's no way around it when SharedArrayBuffer is not available :(.
2021-09-20 14:53:27 +02:00
Marcel Admiraal
cce7e6c9d6
Use current androidx Fragment library instead of legacy libraries
(cherry picked from commit 23311a6ed3)
2021-09-19 11:37:19 +02:00
Daniel Kariv
ca2372164b
fix fullscreen issue on macOS
adds a call for resize event.

(cherry picked from commit 52b114bc78)
2021-09-19 11:30:21 +02:00
PouleyKetchoupp
1454d6c670
Add support for adding plugin views behind the main view on Android
Doesn't change the default behavior, but allows plugins to add their
view behind the main view, which gives more control over what happens
with inputs and can be useful along with transparent rendering.

(cherry picked from commit 0b681d5834)
2021-09-19 11:30:21 +02:00
Fabio Alessandrelli
b7f466012c
[HTML5] Fix bug in AudioWorklet when reading output buffer.
Would attempt an out of bounds read, causing an exception.

(cherry picked from commit ba08f39e47)
2021-09-19 11:30:21 +02:00
Hugo Locurcio
f2ab6bd01c
Improve messages when compiling for Linux/*BSD
- Don't display messages when enabling PulseAudio/ALSA/D-Bus/udev
  as these become noisy in incremental builds.
- Improve warning and error messages to be more descriptive
  and consistent.

(cherry picked from commit 4c5deea83e)
2021-09-19 11:30:20 +02:00
Dan
5a8fe36891 Fix Windows cursor with trails disappearing in fullscreen
Fixed by turning off mouse trails when going into fullscreen, then restoring trails when exiting fullscreen or game
2021-09-16 12:34:46 -07:00
Rémi Verschelde
1bbc7c9c3a
Merge pull request #52713 from Calinou/x11-opengl-driver-reboot
Mention that rebooting is required after updating graphics driver on X11
2021-09-16 10:26:27 +02:00
Rémi Verschelde
e4c4e7c2e0
Merge pull request #52721 from Faless/js/3.x_fix_wheel
[3.x] [HTML5] Fix wheel/touch callback modifying event after parse.
2021-09-16 09:41:53 +02:00
Rémi Verschelde
25cbb858bc
Merge pull request #51935 from nekomatata/android-transparency-3.x
[3.x] Window transparency support on Android
2021-09-15 22:34:12 +02:00
Fredia Huya-Kouadio
c8b022c165 Provide a getter for the project data directory. 2021-09-15 13:00:25 -07:00
Fabio Alessandrelli
97a8b7c68e
Merge pull request #52723 from Faless/js/3.x_mix_rate
[3.x] [HTML5] Use browser mix rate by default on the Web.
2021-09-15 21:49:26 +02:00
Fabio Alessandrelli
b800438efb [HTML5] Use browser mix rate by default on the Web.
Browsers doesn't really like forcing the mix rate, e.g. Firefox does not
allow input (microphone) if the mix rate is not the default one, Chrom*
will exhibit worse performances, etc.
2021-09-15 20:36:19 +02:00
PouleyKetchoupp
52fdb4ece9 Window transparency support on Android
Implements per-pixel transparency feature on Android.
Allows plugins to do specific rendering and render godot UI on top
(useful for camera support with drawing on top).
2021-09-15 10:41:08 -07:00
Hugo Locurcio
a5d027e542
Mention that rebooting is required after updating graphics driver on X11 2021-09-15 18:25:49 +02:00
Fabio Alessandrelli
7dfbc4e57c [HTML5] Fix wheel/touch callback modifying event after parse.
The events should be duplicated or reinstantiated without
assuming that parse_input will consume them immediately.
2021-09-15 17:28:44 +02:00
ne0fhyk
35a98d305b Add support for Play Asset Delivery.
This only adds support for a subset of Play Asset Delivery: this causes a single install-time asset pack to always be present, but doesn't add support for dynamically downloaded asset packs.
2021-09-15 06:02:53 -07:00
Rémi Verschelde
815c16ae17
Merge pull request #52515 from m4gr3d/android_export_refactoring
[3.x] Refactor Android platform export structure
2021-09-15 14:03:53 +02:00
Hugo Locurcio
4d94aba0ed
Improve crash handler message display
- State the Godot version and full hash in the backtrace.
- Add decoration around the crash backtrace, both to make it stand out
  from other messages and help the user figure out what they should copy.

(cherry picked from commit 8556dd1bef)
2021-09-14 13:41:26 +02:00
Marcus Brummer
128208d1d0
Check if vibration duration is > 0 on Android
(cherry picked from commit 47f338fc12)
2021-09-14 13:41:25 +02:00
Fabio Alessandrelli
98b42ca958 [HTML5] Fix input not working when buffered.
After input buffering was reworked, input accumulation is now handled
outside of OS, and the JavaScript plaform never implemented that.
Additionally, the JavaScript platform is quite obnoxious about calling
specific APIs outside specific user triggered events.

This commit adds event flushing during the main iteration, and forces it
during keydown/keyup/mousedown/mouseup/touchstart/touchend/touchcanel
events (effectively only accumulating only "move" events).
2021-09-12 18:42:43 +02:00
Haoyu Qiu
70853fd669 Remove do{ } while(0) wrapper around error macros 2021-09-12 15:04:53 +08:00
Max Hilbrunner
95162ca393
Merge pull request #52540 from kyoz/3.x
Fix (iOS): Clipboard get/set missing implement
2021-09-10 18:25:56 +02:00
Kyoz
6db3e074c5 fix(ios): Clipboard get/set missing implement 2021-09-10 21:46:54 +07:00
ne0fhyk
0cfbe354d7 Refactor Android platform export structure. 2021-09-09 10:48:29 -07:00
Fredia Huya-Kouadio
5b8d7752b5 Update Oculus vr configs and add support for accessing Oculus OpenXR runtime 2021-08-27 11:16:20 -07:00
Fredia Huya-Kouadio
3baf5563e8
Delegate handling and implementation of the restart functionality to the Godot host.
(cherry picked from commit f4222733ca)
2021-08-18 23:21:13 +02:00
Fabio Alessandrelli
b7b9b902e5
Update Godot Javascript FS library to manually depend on ERRNO_CODES.
Fixes compatibility with Emscripten 2.0.26+.

(cherry picked from commit 71fb2429a0)
2021-08-18 23:20:34 +02:00
Rémi Verschelde
2ab45474fd
Merge pull request #51783 from m4gr3d/address_external_dir_access
Fix possible null pointer exception.
2021-08-17 13:32:33 +02:00
ne0fhyk
e2bcdad43b Fix possible null pointer exception. 2021-08-16 23:14:10 -07:00
ModProg
1d63a94d19 [android] Fixed wrong button mask for right click 2021-08-16 18:41:20 +02:00
Rémi Verschelde
5ac3a85af3
Merge pull request #51117 from Calinou/macos-fix-xbox-bluetooth-controllers-3.x
Fix Xbox controllers in Bluetooth mode on macOS (3.x)
2021-08-16 17:50:17 +02:00
Hugo Locurcio
f95035b80b
Fix Xbox controllers in Bluetooth mode on macOS
This prevents the D-pad up arrow from being registered as pressed
when it isn't, and pressing any direction from activating the next
arrow clockwise of it.

Co-authored-by: Scott Wadden <scott.wadden@gmail.com>
2021-08-16 17:06:31 +02:00
Rémi Verschelde
daf922fa8a
Android: Increase default armv7 NDK platform to 19
Following #50359 this is the new minSdk that we target.
Users can still override it in custom builds if they want to support SDK 18.
2021-08-16 10:14:03 +02:00
Rémi Verschelde
028a2a7205
Merge pull request #50359 from m4gr3d/address_external_dir_access
[3.x] Add support for Android scoped storage
2021-08-16 09:48:34 +02:00
ne0fhyk
c88d1608ab Add partial support for Android scoped storage.
This is done by providing API access to app specific directories which don't have any limitations and allows us to bump the target sdk version to 30.
In addition, we're also bumping the min sdk version to 19 as version 18 is no longer supported by Google Play Services and only account of 0.3% of Android devices.
2021-08-13 11:04:17 -07:00
Rémi Verschelde
b484956fba
Merge pull request #51601 from RandomShaper/android_step_acq_rel
Use SafeNumeric for Android JNI step
2021-08-13 09:33:20 +02:00
Rémi Verschelde
f976cec536
Merge pull request #51584 from m4gr3d/investigate_godot_resume_stalls_3_x
[3.x] Resolve issue where the Godot app remains stuck when resuming.
2021-08-13 08:44:33 +02:00
Fredia Huya-Kouadio
336c630f51 Add support for prompting the user to retain app data on uninstall.
Supported on Android 10 and higher.
2021-08-12 22:06:13 -07:00
Fredia Huya-Kouadio
874aa1708f Resolve issue where the Godot app remains stuck when resuming.
This was caused by the fact that a new instance of Godot was created at resume while a previous instance already existed.
The previous instance would then go through its cleanup lifecycle, and would thus attempt to close the entire app, leading to the system to restart the app, thus starting the cycle anew.
The fix involves reusing the previous instance of Godot if one is available instead of creating a new one, as well as giving control to the host activity for how the process should be terminated.
2021-08-12 20:58:00 -07:00
Pedro J. Estébanez
78d945e7fb Use SafeNumeric for Android JNI step
Aside from the cosmetic improvement of using the Godot-style type, this switches to acquire-release semantics, which may improve performance by not forcing a full barrier to be issued if the CPU architecture can use a cheaper one.
2021-08-13 02:48:58 +02:00
Rémi Verschelde
ffc372b002
Merge pull request #42220 from RandomShaper/agile_input_3.2
[3.x] Improve responsiveness on underpowered Android devices
2021-08-12 22:46:17 +02:00
Georg Wacker
8add8f4e58
Fix vertical scroll/zoom for precision touchpad
Adds factor data for vertical mousewheel event, in line with horizontal mousewheel event

(cherry picked from commit 63ba15a518)
2021-08-12 16:37:38 +02:00
Pedro J. Estébanez
45c2a7159e Switch to input buffering on Android
Key, touch and joystick events will be passed directly from the UI thread to Godot, so they can benefit from agile input flushing.

As another consequence of this new way of passing events, less Java object are created at runtime (`Runnable`), which is good since the garbage collector needs to run less.

`AndroidInputHandler` is introduced to have a smaller cross-thread surface. `main_loop_request_go_back()` is removed in favor just inline calling `notification()` on the `MainLoop` at the most caller's convenience.

Lastly, `get_mouse_position()` and `get_mouse_button_state()` now just call through `InputDefault` to avoid the need of sync of mouse data tracked on the UI thread.
2021-08-08 13:41:27 +02:00
Pedro J. Estébanez
7be9c26e20 Add input buffering framework
Input buffering is implicitly used by event accumulation, but this commit makes it more generic so it can be enabled for other uses.

For desktop OSs it's currently not feasible given main and UI threads are the same).
2021-08-08 12:37:55 +02:00
Pedro J. Estébanez
58a54f534e Improve input event accumulation
- API has been simplified: all events now go through `parse_input_event()`. Whether they are accumulated or not depends on the `use_accumulated_input` flag.
- Event accumulation is now thread-safe (it was not needed so far, but it prepares the ground for the following changes).
- Touch drag events now support accumulation.
2021-08-08 12:37:55 +02:00
Rémi Verschelde
afe7b3fc58
Merge pull request #51336 from naithar/fix/ios-plugin-initialization
[3.x] [iOS] Use platform generated api to initialize iOS plugins
2021-08-06 23:59:06 +02:00
Sergey Minakov
d48d7cc94f [iOS] Use platform generated api to initialize iOS plugins 2021-08-06 23:29:09 +03:00
Hugo Locurcio
8fbdcb6fea
Point at software OpenGL when OpenGL fails to initialize on X11 2021-08-05 18:24:42 +02:00
Haoyu Qiu
55b52341d1 Make progress and errors translatable when exporting to Android 2021-08-01 17:15:56 +08:00
Rémi Verschelde
59c050ddc3
Windows: Fix build with SCons 4.2.0
(cherry picked from commit c191cfbddf)
2021-08-01 11:05:40 +02:00
Fredia Huya-Kouadio
df1ebbb0aa Fix custom build export 2021-07-27 12:24:44 -07:00
vitika9
843c2a3dd8
Removed Redundant assignement of name inside configure_joypad function
(cherry picked from commit 1add8b3172)
2021-07-27 12:17:14 +02:00
bruvzg
d86eae09d9
[macOS] Add "debugging" (get-task-allow) to the export options, to allow using native debugger.
(cherry picked from commit 2dd6c3eb09)
2021-07-26 13:37:26 +02:00
luz paz
b684d72af0
Remove unnecessary 'pass' statement
ref: https://lgtm.com/projects/g/godotengine/godot/?mode=tree&ruleFocus=910088
(cherry picked from commit 2e0044c93d)
2021-07-26 13:36:25 +02:00