Commit graph

389 commits

Author SHA1 Message Date
Pedro J. Estébanez
4485b43a57 Modernize atomics
- Based on C++11's `atomic`
- Reworked `SafeRefCount` (based on the rewrite by @hpvb)
- Replaced free atomic functions by the new `SafeNumeric<T>`
- Replaced wrong cases of `volatile` by the new `SafeFlag`
- Platform-specific implementations no longer needed

Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
2021-02-18 12:23:25 +01:00
Pedro J. Estébanez
6d89f675b1 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)
2021-02-18 11:58:08 +01:00
Pedro J. Estébanez
8f6a636ae7 Modernize Semaphore
- Based on C++11's `mutex` and `condition_variable`
- 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`
2021-02-18 11:58:08 +01:00
Pedro J. Estébanez
4ddcdc031b Modernize Mutex
- Based on C++11's `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`
- `BinaryMutex` added for special cases as the non-recursive version
- `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`.
- `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same.
2021-02-18 11:58:08 +01:00
Sergey Minakov
518ba25fae [iOS] Remove remote notifications code
Using any remote notification method (even indirectly) causes App Store to trigger APNS warning email.

(cherry picked from commit 4fda1ae6b8)
2021-02-05 09:26:09 +01:00
Rémi Verschelde
cdb5ac52f5
Merge pull request #45685 from naithar/feature/extend-plugin-params
[3.2] [iOS] Additional 'linker_flags' plugin parameter
2021-02-03 18:37:47 +01:00
Sergey Minakov
fdec8d726d iOS: Use storyboard as loading screen
If 'Launch Screen' storyboard is present it will be used as loading screen.
2021-02-03 20:01:05 +03:00
Sergey Minakov
309835b917 [iOS] Additional 'linker_flags' plugin parameter 2021-02-03 18:22:17 +03:00
Sergey Minakov
19d240c8a7 [iOS] Initialize plugins earlier
Initialize iOS plugins before 'Main::setup' call to have access to them in script's '_init' function.
2021-02-01 15:28:14 +03:00
Rémi Verschelde
c2ea80348c
Revert "[3.2] Add separate simulator flag for iOS build, change main library to xcframework." 2021-01-27 21:53:16 +01:00
Sergey Minakov
d2af815039
[iOS] Rework push notification methods usage
Moved AppDelegate push notifications methods implementation to 'GODOT_ENABLE_PUSH_NOTIFICATIONS'
which can be used in plugins to implement APNS plugins.

(cherry picked from commit 366ce084f4)
2021-01-26 22:11:10 +01:00
Sergey Minakov
7c076fbd0b
[iOS] Fix embedding of plugin libraries
(cherry picked from commit 6d67827f4e)
2021-01-26 17:00:15 +01:00
Sergey Minakov
7689f05786
[iOS] Added support for '.xcframework' in plugins
(cherry picked from commit 01d513f3ca)
2021-01-26 17:00:15 +01:00
Rémi Verschelde
c5a22d7284
Merge pull request #45480 from bruvzg/ios_arm64_sim_3
[3.2] Add separate `simulator` flag for iOS build, change main library to `xcframework`.
2021-01-26 15:20:27 +01:00
bruvzg
389a4bfa59
[3.2] Add separate simulator flag for iOS build, change main library to xcframework format. 2021-01-26 16:00:26 +02:00
Sergey Minakov
d4096285b6 [iOS] Remove plugins from modules. 2021-01-17 14:46:03 +03:00
Rémi Verschelde
7e207cfd48
i18n: Sync translations with Weblate 2021-01-15 16:49:47 +01:00
Rémi Verschelde
c47ad12e80
Merge pull request #43557 from naithar/feature/pluggable_app_delegates_3.2
[3.2] [iOS] Pluggable application delegate
2021-01-15 16:14:21 +01:00
Sergey Minakov
64923945b3 [Plugins] Rename 'PluginConfig' struct to platform specific name 2021-01-15 02:12:53 +03:00
Sergey Minakov
cb15abda29 iOS Export: support multi-target plugin
Plugins can use 'binary_name.a' or 'binary_name.release.a' and 'binary_name.debug.a' for plugin library.
2021-01-14 15:38:16 +03:00
Sergey Minakov
d5047603a3 iOS Export: export modification to support plugins
Added plugin configuration.
Export options now use plugins that could be enabled/disabled.
Plugin changes are observed at runtime.
2021-01-14 15:38:05 +03:00
Sergey Minakov
03cf3d5d4b iOS: change platform code to support plugins 2021-01-14 15:30:09 +03:00
Sergey Minakov
614f701373 iOS Modules: separate main platform code from modules
Moved previously builtin modules 'GameCenter', 'AppStore', 'iCloud' to separate modules to be represented as plugin.
Modified 'ARKit' and 'Camera' to not be builtin into engine and work as plugin.
Changed platform code so it's not affected by the move.
Modified Xcode project file to remove parameters that doesn't make any effect.
Added basic '.gdip' plugin config file.
2021-01-14 15:30:00 +03:00
Rémi Verschelde
49646383f1
Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆

(cherry picked from commit b5334d14f7)
2021-01-13 16:17:06 +01:00
Rémi Verschelde
60959b085d
SCons: Add only selected platform's opts to env
Otherwise we can get situations where platform-specific opts with the same name
can override each other depending on the order at which platforms are parsed,
as was the case with `use_static_cpp` in Linux/Windows.

Fixes #44304.

This also has the added benefit that the `scons --help` output will now only
include the options which are relevant for the selected (or detected) platform.

(cherry picked from commit 0f84d8dc49)
2020-12-29 16:02:00 +01:00
Sergey Minakov
8b6357cf28 iOS: fix keyboard display 2020-12-16 05:05:38 +03:00
Sergey Minakov
067d015d38
iOS: fix native video
Fixed view not being displayed.
Fixed view orientation change.

(cherry picked from commit 6b2483c331)
2020-11-26 09:38:47 +01:00
Rémi Verschelde
4a1643114e
Export: Reorder options for consistency across platforms
(cherry picked from commit 504efc5f9b)
2020-11-26 09:38:46 +01:00
Sergey Minakov
4991872305 iOS: Implement pluggable application delegate. 2020-11-15 14:27:07 +03:00
bruvzg
df6ea27ab3
[3.2] Disable iOS SDK version check on osxcross.
Currently, osxcross `xcrun` supports only macOS SDKs.
2020-10-21 07:56:05 +03:00
Rémi Verschelde
3b4005026d
Merge pull request #42593 from bruvzg/ios_sdk_ver_check
[3.2] Add iOS SDK version check.
2020-10-20 15:12:59 +02:00
Sergey Minakov
b07877cd27 iOS: fix in app store
Enforce strong reference for SKRequests and delegate objects for transactions to work correctly
2020-10-16 15:51:12 +03:00
bruvzg
d44bc8d5bc
[3.2] Add iOS SDK version check. 2020-10-06 11:33:52 +03:00
Sergey Minakov
5d1284204d iOS: port ARC support 2020-10-06 00:23:25 +03:00
Sergey Minakov
2bdfec2418 iOS: Refactor platform code
Change project structure to be more like 4.0
Refactor and remove old code as followup after deprecations fix
2020-10-06 00:23:09 +03:00
Rémi Verschelde
014147e511
Merge pull request #40557 from PoqXert/game-center
iOS Game Center improvements
2020-10-02 10:58:14 +02:00
Poq Xert
ea5833fc4c iOS GameCenter: Add authenticate method
And no longer connect automatically.
2020-10-02 01:20:11 +10:00
Sergey Minakov
3386fac02c iOS: fix deprecations
Change deprecated method calls to new ones.
Guard iOS version dependant functionality behind availability checks.
2020-10-01 18:09:55 +03:00
Rémi Verschelde
58f5b25340
Merge pull request #41173 from naithar/fix/iphone-os-values-3.2
[iOS] [3.2] Simplify OS values retrieval
2020-10-01 13:09:36 +02:00
Sergey Minakov
42de81e235 iOS: move touch delay to settings 2020-10-01 12:36:57 +03:00
Vasiliy Makarov
f388ea00bf iOS: Fix multiple issues with PVRTC import, disable ETC1
Fixes: #28683, #28621, #28596 and maybe others

For iOS we enable pvrtc feature by default for both GLES2/GLES3
Etc1 for iOS doesn't have any sense, so it disabled.
Fixed checks in export editor.
Fixed pvrtc ability detection in GLES2 driver.
Fixed pvrtc encoding procedure.
2020-09-23 11:13:50 +02:00
Rémi Verschelde
c8859f0463
Fix typos with codespell
Using codespell 1.17.1.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
fave
findn
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF

$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
2020-09-18 14:09:51 +02:00
Sergey Minakov
f81c6c52fc iOS: fix deprecations and leaks
Fixes some deprecations and leaks reported by Xcode Analyzer
2020-08-25 17:17:17 +03:00
Rémi Verschelde
9bf5a0b791
Merge pull request #41081 from naithar/feature/ios-framework-import-3.2
[iOS] [3.2] Export: Add a method to embed a framework
2020-08-19 14:11:27 +02:00
Sergey Minakov
910c554a1a iOS Export: Add a method to embed a framework
By default 'add_ios_framework' would not embed a framework to save previous behavior.
New 'add_ios_embedded_framework' would embed framework on export.
2020-08-19 14:54:59 +03:00
Christopher Davis
f19bab5165 platform: Update metadata for export platforms
Updates the logos of for macOS, Android, and iOS.

Addresses https://github.com/godotengine/godot-proposals/issues/1161

(cherry picked from commit 41d8c0c818)
2020-08-14 00:32:05 +02:00
Sergey Minakov
8a8f0a3b79 iOS: simplify OS values retrieval 2020-08-10 16:21:42 +03:00
Rémi Verschelde
a2edf04fd2
Merge pull request #40469 from nekomatata/virtual-keyboard-enter-fixes-3.2
[3.2] Fix Return key events in LineEdit & TextEdit on Android
2020-07-26 20:26:02 +02:00
Rémi Verschelde
db6d7499c0
Merge pull request #40723 from naithar/fix/ios-touch-events-master-3.2
[3.2] Fix for iOS touch recognition
2020-07-26 15:42:59 +02:00
Sergey Minakov
16f9ff5866 iOS: added delay gesture recognizer
This gesture recognizer will prevent GLView from processing unwanted gestures.
Emulates UIScrollView behavior
Fires delayed touches on significant movement
2020-07-26 15:49:09 +03:00