37
37
#include " core/version.h"
38
38
39
39
extern void gdextension_setup_interface ();
40
- extern void *gdextension_get_legacy_interface ();
41
40
extern GDExtensionInterfaceFunctionPtr gdextension_get_proc_address (const char *p_name);
42
41
43
42
typedef GDExtensionBool (*GDExtensionLegacyInitializationFunction)(void *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
@@ -450,7 +449,7 @@ GDExtensionInterfaceFunctionPtr GDExtension::get_interface_function(StringName p
450
449
return *function;
451
450
}
452
451
453
- Error GDExtension::open_library (const String &p_path, const String &p_entry_symbol, bool p_use_legacy_interface ) {
452
+ Error GDExtension::open_library (const String &p_path, const String &p_entry_symbol) {
454
453
Error err = OS::get_singleton ()->open_dynamic_library (p_path, library, true , &library_path);
455
454
if (err != OK) {
456
455
ERR_PRINT (" GDExtension dynamic library not found: " + p_path);
@@ -467,15 +466,8 @@ Error GDExtension::open_library(const String &p_path, const String &p_entry_symb
467
466
return err;
468
467
}
469
468
470
- GDExtensionBool ret = 0 ;
471
- if (p_use_legacy_interface) {
472
- GDExtensionLegacyInitializationFunction initialization_function = (GDExtensionLegacyInitializationFunction)entry_funcptr;
473
- ret = initialization_function (gdextension_get_legacy_interface (), this , &initialization);
474
-
475
- } else {
476
- GDExtensionInitializationFunction initialization_function = (GDExtensionInitializationFunction)entry_funcptr;
477
- ret = initialization_function (&gdextension_get_proc_address, this , &initialization);
478
- }
469
+ GDExtensionInitializationFunction initialization_function = (GDExtensionInitializationFunction)entry_funcptr;
470
+ GDExtensionBool ret = initialization_function (&gdextension_get_proc_address, this , &initialization);
479
471
480
472
if (ret) {
481
473
level_initialized = -1 ;
@@ -486,10 +478,6 @@ Error GDExtension::open_library(const String &p_path, const String &p_entry_symb
486
478
}
487
479
}
488
480
489
- Error GDExtension::open_library_compat_76406 (const String &p_path, const String &p_entry_symbol) {
490
- return open_library (p_path, p_entry_symbol, true );
491
- }
492
-
493
481
void GDExtension::close_library () {
494
482
ERR_FAIL_COND (library == nullptr );
495
483
OS::get_singleton ()->close_dynamic_library (library);
@@ -525,8 +513,7 @@ void GDExtension::deinitialize_library(InitializationLevel p_level) {
525
513
}
526
514
527
515
void GDExtension::_bind_methods () {
528
- ClassDB::bind_method (D_METHOD (" open_library" , " path" , " entry_symbol" , " use_legacy_interface" ), &GDExtension::open_library, DEFVAL (false ));
529
- ClassDB::bind_compatibility_method (D_METHOD (" open_library" , " path" , " entry_symbol" ), &GDExtension::open_library_compat_76406);
516
+ ClassDB::bind_method (D_METHOD (" open_library" , " path" , " entry_symbol" ), &GDExtension::open_library);
530
517
ClassDB::bind_method (D_METHOD (" close_library" ), &GDExtension::close_library);
531
518
ClassDB::bind_method (D_METHOD (" is_library_open" ), &GDExtension::is_library_open);
532
519
@@ -599,9 +586,20 @@ Ref<Resource> GDExtensionResourceLoader::load(const String &p_path, const String
599
586
compatibility_minimum[i] = parts[i];
600
587
}
601
588
}
589
+ } else {
590
+ if (r_error) {
591
+ *r_error = ERR_INVALID_DATA;
592
+ }
593
+ ERR_PRINT (" GDExtension configuration file must contain a \" configuration/compatibility_minimum\" key: " + p_path);
594
+ return Ref<Resource>();
602
595
}
603
- if (compatibility_minimum[0 ] < 4 ) {
604
- compatibility_minimum[0 ] = 4 ;
596
+
597
+ if (compatibility_minimum[0 ] < 4 || (compatibility_minimum[0 ] == 4 && compatibility_minimum[1 ] == 0 )) {
598
+ if (r_error) {
599
+ *r_error = ERR_INVALID_DATA;
600
+ }
601
+ ERR_PRINT (vformat (" GDExtension's compatibility_minimum (%d.%d.%d) must be at least 4.1.0: %s" , compatibility_minimum[0 ], compatibility_minimum[1 ], compatibility_minimum[2 ], p_path));
602
+ return Ref<Resource>();
605
603
}
606
604
607
605
bool compatible = true ;
@@ -635,12 +633,10 @@ Ref<Resource> GDExtensionResourceLoader::load(const String &p_path, const String
635
633
library_path = p_path.get_base_dir ().path_join (library_path);
636
634
}
637
635
638
- bool use_legacy_interface = compatibility_minimum[0 ] == 4 && compatibility_minimum[1 ] == 0 ;
639
-
640
636
Ref<GDExtension> lib;
641
637
lib.instantiate ();
642
638
String abs_path = ProjectSettings::get_singleton ()->globalize_path (library_path);
643
- err = lib->open_library (abs_path, entry_symbol, use_legacy_interface );
639
+ err = lib->open_library (abs_path, entry_symbol);
644
640
645
641
if (r_error) {
646
642
*r_error = err;
0 commit comments