Pedro J. Estébanez
28619e26cf
ResourceLoader: Enhance deadlock prevention
...
Benefits:
- Simpler code. The main load function is renamed so it's apparent that it's not just a thread entry point anymore.
- Cache and thread modes of the original task are honored. A beautiful consequence of this is that, unlike formerly, re-issued loads can use the resource cache, which makes this mechanism much more performant.
- The newly added getter for caller task id in WorkerThreadPool allows to remove the custom tracking of that in ResourceLoader.
- The check to replace a cached resource and the replacement itself happen atomically. That fixes deadlock prevention leading to multiple resource instances of the same one on disk. As a side effect, it also makes the regular check for replace load mode more robust.
2024-08-21 12:19:43 +02:00
aaronp64
7593e55527
Improve Editor Inspector/Theme item lookup performance
...
Changes to reduce the latency between changing node selection in the editor and seeing the new node reflected in the Inspector tab
- Use Vector instead of List for ThemeOwner::get_theme_type_dependencies and related functions
- Use Vector instead of List for ThemeContext::themes, set_themes(), and get_themes()
- Add ClassDB:get_inheritance_chain_nocheck to get all parent/ancestor classes at once, to avoid repeated ClassDB locking overhead
- Update BIND_THEME_ITEM macros and ThemeDB::update_class_instance_items to use provided StringNames for call to ThemeItemSetter, instead of creating a new StringName in each call
These changes reduce the time taken by EditorInspector::update_tree by around 30-35%
2024-08-20 13:39:40 -04:00
Daylily-Zeleen
3d575801ce
Allow ClassDB to create a Object without postinitialization for GDExtension.
2024-08-20 20:19:02 +08:00
Pedro J. Estébanez
32b7f835d8
Avoid potential crash on signal disconnection
2024-08-19 12:18:04 +02:00
voidedWarranties
d65ea6fb9c
Fix virtual binding for `ScriptLanguageExtension::_reload_scripts`
2024-08-17 21:09:32 -07:00
Haoyu Qiu
7343dc3a5d
Split TranslationServer into its own file
2024-08-15 15:00:47 +08:00
aaronp64
6e5175592d
Improve ClassDB::_is_parent_class performance
...
Change ClassDB::_is_parent_class to use ClassInfo::inherits_ptr, instead of looking up each inherited class name.
2024-08-08 13:16:42 -04:00
Hilderin
1ed723bd19
Fix global class cache file not present when no class name
2024-07-31 16:57:25 -04:00
Alvin Wong
c9f4436073
Fix use-after-free in WorkerThreadPool
2024-07-29 14:26:48 +02:00
Rémi Verschelde
293c0f7646
Merge pull request #94526 from RandomShaper/wtp_rl_prize_prequel
...
Batch of fixes for WorkerThreadPool and ResourceLoader (safe set)
2024-07-19 11:11:03 +02:00
Rémi Verschelde
ab67408390
Merge pull request #94238 from RandomShaper/ref_is_now_rc
...
Make errors on `RefCounted.free()` more accurate
2024-07-17 11:43:32 +02:00
Pedro J. Estébanez
5b5cdf2414
Fixup recent changes to threading concerns
...
ResourceLoader:
- Fix invalid tokens being returned.
- Remove no longer written `ThreadLoadTask::dependent_path` and the code reading from it.
- Clear deadlock hazard by keeping the mutex unlocked during userland polling.
WorkerThreadPool:
- Include thread call queue override in the thread state reset set, which allows to simplify the code that handled that (imperfectly) in the ResourceLoader.
- Handle the mutex type correctly on entering an allowance zone.
CommandQueueMT:
- Handle the additional possibility of command buffer reallocation that mutex unlock allowance introduces.
2024-07-16 11:03:02 +02:00
Pedro J. Estébanez
10b543f8a7
WorkerThreadPool: Fix wrong sync logic breaking task map integrity
2024-07-15 12:15:25 +02:00
Pedro J. Estébanez
76bfe8e0fd
Make errors on RefCounted.free() more accurate
2024-07-15 08:51:42 +02:00
Rémi Verschelde
fe5d567917
Merge pull request #93942 from MikeSchulze/73525
...
Fix GDScript analyzer error when instantiating EditorPlugins.
2024-07-11 09:41:09 +02:00
baptr
810fcc7431
Fix gdscript analyzer error when instantiating EditorPlugins.
...
Editor code is not instantiable outside of the editor
(1d14c054a1/core/object/class_db.cpp (L369)
).
This is fine for editor plugins and the like, but the GDScript analyzer
balks at it, causing F5 runs to fail: #73525 .
Instead, we really just want to know if the type is abstract - so add
a new ClassDB method to check that and nothing else.
Update core/object/class_db.cpp
Apply code review comments
Co-Authored-By: Bryce <1522777+baptr@users.noreply.github.com>
2024-07-10 10:24:57 +02:00
David Snopek
91fcdff01e
GDExtension: Fix setting base class properties on a runtime class
2024-07-08 12:33:55 -05:00
Danil Alexeev
151f34bb80
Core: Remove unused method `_is_gpl_reversed()`
2024-07-08 12:31:09 +03:00
Pedro J. Estébanez
f2f9a6b8a1
WorkerThreadPool: Fix wrong pointer used in the case of BinaryMutex
2024-06-28 19:46:55 +02:00
Rémi Verschelde
6f8b90e412
Merge pull request #93032 from RandomShaper/wtp_antilock
...
GDScript: Avoid deadlock possibility in multi-threaded load
2024-06-28 14:42:48 +02:00
Raul Santos
175e5bcf4e
Lookup method also in base scripts of a PlaceHolderScriptInstance
2024-06-22 08:11:48 +02:00
Pedro J. Estébanez
03d14e436b
WorkerThreadPool: Refactor deadlock prevention collaboration into a generic mechanism
...
This is strictly beyond a refactor because it also changes when the mutexes are relocked,
but that's only for extra safety.
2024-06-19 14:01:54 +02:00
Rémi Verschelde
0a83e7c5da
Merge pull request #93288 from rune-scape/gdextension-const-stringname-weird
...
Object: Use const correct `GDExtensionConstStringNamePtr`
2024-06-18 17:59:25 +02:00
rune-scape
ca916a536a
Object: use correct GDExtensionConstStringNamePtr
2024-06-17 19:06:40 -07:00
Jovan Gerodetti
21586da50e
Make profiling_get_frame_data call the correct GDVIRTUAL method.
2024-06-18 00:53:25 +02:00
Pedro J. Estébanez
21c03d1956
WorkerThreadPool: Fix thread message queue not restored after overridden in a task
...
Also, simplifies the thread override teardown in MessageQueue.
2024-06-13 10:31:08 +02:00
Rémi Verschelde
5bab95a556
Merge pull request #92827 from raulsntos/core/node-to_string
...
Use GDExtension `to_string` in Node
2024-06-12 10:00:29 +02:00
Raul Santos
29bf60cc02
Use GDExtension `to_string` in Node
...
Matches the `Object::to_string` implementation.
2024-06-11 17:40:51 +02:00
Rémi Verschelde
94929439b6
Revert "Fix method name for custom callable"
...
This reverts commit e88095ed8f
.
Fixes #92695 .
2024-06-11 11:02:03 +02:00
Chris Cranford
8577340501
Expose several EngineDebugger methods and signals as plugin callbacks
2024-06-10 19:46:23 -04:00
Pedro J. Estébanez
f61c63e3a1
Avoid editor error reporting using resource loader thread's call queues
2024-05-31 09:42:37 +02:00
Rémi Verschelde
4808f24312
Merge pull request #92350 from 4d49/undo-redo-fix-callable-name
...
Fix `UndoRedo` method name for custom `Callable`
2024-05-28 15:49:26 +02:00
Mansur Isaev
e88095ed8f
Fix method name for custom callable
2024-05-25 10:23:10 +04:00
Mikael Hermansson
e312f147aa
Fix `ClassDB` not checking for `API_EDITOR_EXTENSION`
2024-05-25 00:23:12 +02:00
David Snopek
62f9365b21
Don't use `ERR_PRINT_ONCE()` for runtime class error because it will hide errors
2024-05-21 13:55:56 -05:00
Rémi Verschelde
bdefe53992
Merge pull request #91909 from KoBeWi/have_fun_reviewing_this
...
Use Core/Scene stringnames consistently
2024-05-14 12:07:03 +02:00
kobewi
413c11357d
Use Core/Scene stringnames consistently
2024-05-13 23:41:07 +02:00
Rémi Verschelde
5cb9a748d6
Merge pull request #91630 from RandomShaper/enh_mat_sh_update
...
Let materials' shaders update happen on loader threads
2024-05-13 17:32:11 +02:00
kobewi
a262d2d881
Add shorthand for using singleton string names
2024-05-11 18:53:08 +02:00
David Snopek
14506a4282
GDExtension: Prevent crash during shutdown as singletons are deleted
2024-05-10 13:17:36 -05:00
Pedro J. Estébanez
b834037841
Object: Add missing lock
2024-05-08 17:41:40 +02:00
Rémi Verschelde
a1905b8e7d
Merge pull request #91570 from Naros/preferred_file_name_casing_default
...
Add default implementation of `ScriptLanguageExtension::preferred_file_name_casing`
2024-05-07 09:04:48 +02:00
Pedro J. Estébanez
187e5ef258
Let materials' shaders update happen on loader threads
2024-05-06 19:40:00 +02:00
Chris Cranford
fdc5b42646
Add default implementation of `ScriptLanguageExtension::preferred_file_name_casing`.
2024-05-04 18:50:04 -04:00
A Thousand Ships
955d5affa8
Reduce and prevent unnecessary random-access to `List`
...
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)
* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
K. S. Ernest (iFire) Lee
f9b488508c
Add PackedVector4Array Variant type
...
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-05-03 00:58:27 +02:00
Rémi Verschelde
947f5a8741
Merge pull request #91247 from AThousandShips/callable_fix
...
Fix unsafe uses of `Callable.is_null()`
2024-04-29 10:10:32 +02:00
A Thousand Ships
31e7ee63f2
Fix unsafe uses of `Callable.is_null()`
...
`Callable.is_null()` is not equivalent to `!Callable.is_valid()` and
doesn't guarantee the call is valid.
2024-04-27 16:22:57 +02:00
Jan Haller
27a637d287
GDExtension: provide `free_property_list_func` with length of array
2024-04-27 14:13:17 +02:00
Rémi Verschelde
2e92fb00d4
Merge pull request #90540 from Repiteo/core/type-info-use-type-traits
...
Core: Use `<type_traits>` where applicable
2024-04-24 18:55:07 +02:00
Rémi Verschelde
e50867ae34
Merge pull request #90776 from Naros/avoid-script-language-not-overridden
...
Defer call to `set_break_language`
2024-04-19 16:27:33 +02:00
Rémi Verschelde
0b8042180e
Merge pull request #90447 from dsnopek/gdextension-hot-reload-not-classdb-instantiate
...
Fix GDExtension hot reload for classes not created via `ClassDB::instantiate()`
2024-04-19 16:27:26 +02:00
Pedro J. Estébanez
8192d1cbc7
WorkerThreadPool: Fix yield-over for not-yet-started tasks
2024-04-18 19:25:19 +02:00
Rémi Verschelde
866f2c56f7
Merge pull request #90674 from RadiantUwU/change_stuff
...
Implement `Object.remove_user_signal(signal: StringName)`
2024-04-18 12:24:34 +02:00
Radiant
e263b11cdd
Implement remove_user_signal()
...
Co-authored-by: Timothe Bonhoure <tbonhoure@ymail.Com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-04-18 11:22:59 +03:00
Pedro J. Estébanez
9653bcaa43
WorkerThreadPool: Polish yielding (fix corner case, remove misleading warning)
2024-04-17 18:32:14 +02:00
Chris Cranford
d0fa2c3cfa
Defer call to set_break_language
2024-04-16 20:01:53 -04:00
Thaddeus Crews
127025679b
Core: Use `<type_traits>` where applicable
2024-04-11 13:13:59 -05:00
Pedro J. Estébanez
1b104ffcd8
WorkerThreadPool: Support daemon-like tasks (via yield semantics)
2024-04-10 18:47:42 +02:00
Pedro J. Estébanez
71facbaa88
WorkerThreadPool: Fix data race
2024-04-10 18:47:41 +02:00
A Thousand Ships
64146cb7f3
[Core] Add iteration support to `Array`
2024-04-10 14:49:34 +02:00
David Snopek
87aec2745d
Fix GDExtension hot reload for classes not created via `ClassDB::instantiate()`
2024-04-09 13:40:33 -05:00
Rémi Verschelde
48cf825839
Merge pull request #89451 from AThousandShips/emit_fix
...
[Core] Disconnect one-shot signals before calling callbacks
2024-03-24 01:15:52 +01:00
Rémi Verschelde
d5f944ff10
Merge pull request #89261 from paulloz/core/fix-script-reloading-outside-script-editor
...
Fix how scripts reload outside of ScriptEditor
2024-03-24 01:15:23 +01:00
A Thousand Ships
db455e5bee
[Core] Disconnect one-shot signals before calling callbacks
...
This prevents infinite recursion with one-shot connections emitting
themselves
2024-03-20 20:24:44 +01:00
Paul Joannon
63674648fb
Fix how scripts reload outside of ScriptEditor
2024-03-18 10:29:06 +01:00
Rémi Verschelde
68ad520da4
Merge pull request #89519 from YeldhamDev/are_you_kidding_me_right_now
...
Fix translation fallback not working in the Project Manager
2024-03-15 17:01:34 +01:00
Michael Alexsander
11937d3a79
Fix translation fallback not working in the Project Manager
2024-03-15 12:00:20 -03:00
Rémi Verschelde
7d4804e945
Merge pull request #89490 from AThousandShips/queue_print_fix
...
[Core] Prevent further infinite recursion when printing errors
2024-03-15 10:40:08 +01:00
A Thousand Ships
14897f6dd7
[Core] Prevent further infinite recursion when printing errors
2024-03-14 22:44:22 +01:00
Rémi Verschelde
4163fb9c26
Merge pull request #89489 from YeldhamDev/yet_another_etr_fix
...
Fix some translations not properly falling back
2024-03-14 22:35:41 +01:00
Rémi Verschelde
453485aede
Merge pull request #89270 from Repiteo/enforce-typename-in-templates
...
Enforce template syntax `typename` over `class`
2024-03-14 22:34:37 +01:00
Michael Alexsander
05f6c56a48
Fix some translations not properly falling back
2024-03-14 16:38:12 -03:00
A Thousand Ships
0c19d0f5a0
Add extension support for argument count to `ScriptInstance`
2024-03-13 22:40:09 +01:00
Rémi Verschelde
a1c476f9d7
Merge pull request #87680 from AThousandShips/the_angry_count
...
Add methods to get argument count of methods
2024-03-13 22:16:43 +01:00
Thaddeus Crews
5a6e3cbcb0
SCons: Remove `run_in_subprocess` dependency
2024-03-11 13:20:09 -05:00
Rémi Verschelde
0475011c66
Merge pull request #82084 from ogapo/pr/pck-cache-merge
...
Merge `uid_cache.bin` and `global_script_class_cache.cfg` after mounting PCKs
2024-03-11 14:01:16 +01:00
Thaddeus Crews
8116d70d4b
SCons: Convert remaining `run_in_subprocess` to `env.Run`
2024-03-10 14:01:23 -05:00
A Thousand Ships
59bcc2888c
Add methods to get argument count of methods
...
Added to:
* `Callable`s
* `Object`s
* `ClassDB`
* `Script(Instance)`s
2024-03-10 11:02:43 +01:00
Thaddeus Crews
d9fa40f2df
Enforce `\n` eol for Python writes
...
• Ensure utf-8 encoding if previously unspecified
2024-03-09 14:29:24 -06:00
Thaddeus Crews
9903e6779b
Enforce template syntax `typename` over `class`
2024-03-07 22:39:09 -06:00
David Nikdel
5e6adb4a2d
Merge uid_cache.bin and global_script_class_cache.cfg after mounting PCKs
...
fixes godotengine#82061
fixes godotengine#61556
Also, distinguish between main pack and DLC packs.
It's desirable to downloaded content to be as small as possible. This change avoids bloating non-main pack files with new versions of resources that are all read on startup and never used again. They have no effect if loaded after startup.
- project.godot/project.binary file
- extension_list.cfg
- app icon and boot_splash
- .ico and .icns files (these can still be opted in for DLC by listing them explicitly in the include filter)
2024-03-06 12:14:21 -05:00
Rémi Verschelde
9b94c80e9a
Merge pull request #89175 from paulloz/dotnet/fix-exported-nodes-reset-without-build-artifacts
...
Hint fallback property as node when it is a node
2024-03-06 13:32:00 +01:00
Rémi Verschelde
b85337b7ea
Merge pull request #87222 from RandomShaper/fix_obj_leaks_report
...
Fix inaccuracies in the report of leaked objects
2024-03-06 13:16:48 +01:00
Pedro J. Estébanez
fdc47adf1e
Help compilers optimize Object::cast_to()
2024-03-06 12:45:26 +01:00
Sofox
f249667dc8
Fixed MERGE_ALL commit from repeating actions
2024-03-05 23:40:26 +00:00
Paul Joannon
e7c90e0884
Hint fallback property as node when it is a node
2024-03-05 12:47:11 +01:00
RedMser
2bd714e34e
Allow configuring the script filename casing rule
...
Defaults to "Auto", which detects the casing based on the
preference of the currently selected language (C# for example
prefers PascalCase whereas GDScript prefers snake_case).
2024-03-05 09:43:29 +01:00
Rémi Verschelde
50ca190286
Merge pull request #89055 from dsnopek/gdextension-script-free-lists
...
GDExtension: Pass count when freeing method and property lists for script instances
2024-03-04 13:33:45 +01:00
David Snopek
0badf07657
GDExtension: Pass count when freeing method and property lists for script instances
2024-03-02 10:13:37 -06:00
Rémi Verschelde
c1377920cd
Merge pull request #86743 from Mickeon/autocompletion-optimise-object
...
Optimise comparisons for Object's `get_argument_options`
2024-03-01 14:56:06 +01:00
Micky
cd2032a90b
Optimise Object's `get_argument_options`
2024-02-29 18:00:54 +01:00
Rémi Verschelde
9101067666
Merge pull request #88958 from 398utubzyt/gltf/use-correct-name
...
Fix compilation errors when `DISABLE_DEPRECATED` is defined
2024-02-29 13:54:35 +01:00
Michael Alexsander
d70c45b5c8
Add option to add built-in strings in the POT generation
2024-02-28 11:34:26 -03:00
398utubzyt
4c69e8c026
Fix compilation errors when `DISABLE_DEPRECATED` is defined
2024-02-28 05:09:29 -08:00
Rémi Verschelde
8b9a6cfa9f
Merge pull request #88870 from dsnopek/gdextension-fix-runtime-class-ancestor-methods
...
GDExtension: Fix calling ancestor methods on runtime classes
2024-02-27 10:18:31 +01:00
David Snopek
3335528954
GDExtension: Fix calling ancestor methods on runtime classes
2024-02-26 10:23:23 -06:00
Robert Yevdokimov
13e82094ee
Remove word duplicates in comments and strings, and fix casing and punctuation
2024-02-23 17:28:28 -05:00
Rémi Verschelde
45dd2bd31e
Merge pull request #88683 from dsnopek/runtime-classes-in-modules
...
Allow registering "runtime classes" in modules (not just GDExtension)
2024-02-23 11:29:46 +01:00
Raul Santos
5ba92e5a57
Fix some DEFVALs to use the right type
...
- Use `StringName()` in DEFVAL for StringNames.
- Use `Variant()` in DEFVAL for Variants.
2024-02-23 01:50:18 +01:00