GDExtension: Check if class without recreate callback is creatable, before marking whole extension as unreloadable

This commit is contained in:
David Snopek
2024-11-12 10:46:44 -06:00
parent 8f87e60307
commit e4aaf9fbc6

View File

@@ -410,8 +410,16 @@ void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr
}
if (self->reloadable && p_extension_funcs->recreate_instance_func == nullptr) {
ERR_PRINT(vformat("Extension marked as reloadable, but attempted to register class '%s' which doesn't support reloading. Perhaps your language binding don't support it? Reloading disabled for this extension.", class_name));
self->reloadable = false;
bool can_create_class = (bool)p_extension_funcs->create_instance_func;
#ifndef DISABLE_DEPRECATED
if (!can_create_class && p_deprecated_funcs) {
can_create_class = (bool)p_deprecated_funcs->create_instance_func;
}
#endif
if (can_create_class) {
ERR_PRINT(vformat("Extension marked as reloadable, but attempted to register class '%s' which doesn't support reloading. Perhaps your language binding don't support it? Reloading disabled for this extension.", class_name));
self->reloadable = false;
}
}
extension->gdextension.library = self;