gdext
-based custom resource format tools needs experimental-threads
feature
#597
Labels
gdext
-based custom resource format tools needs experimental-threads
feature
#597
Uh oh!
There was an error while loading. Please reload this page.
To handle custom Resource formats, one needs to define
ResourceFormatSaver
andResourceFormatLoader
, and register them withResourceSaver::add_resource_format_saver()
andResourceLoader::add_resource_format_loader()
for the formats to be recognizable by Godot.Unbeknownst to the user, registered GodotClasses can be used by Godot outside of the main thread, and it happens only when opening the project in the Godot Editor (or just on
InitLevel::Editor
- as the same happens also during export). Currently, I can confirm only usage ofResourceFormatLoader
methods, but I can't say for sure that any other calls won't be made.Methods in question:
ResourceFormatLoader::get_resource_uid()
ResourceFormatLoader::get_recognized_extensions()
ResourceFormatLoader::get_resource_type()
After thread-hardening with additional checks in #581, in practice, it means that any
gdext
-based project that providesResourceFormatLoader
will panic without theexperimental-threads
feature enabled.Will try to provide a minimal example at a further date, currently I paste below the output produced by the locally-modified
gd-props
integration testing project.--quit
option (and during project export outputs seems to be analogous -EditorExportPlugin
itself is running only on the main thread)Browsing the project in the editor while some testing, all the methods seem to be called from the main thread.
The text was updated successfully, but these errors were encountered: