diff options
author | Gergely Kis <gergely.kis@migeran.com> | 2024-07-14 09:21:31 +0200 |
---|---|---|
committer | Gergely Kis <gergely.kis@migeran.com> | 2024-09-29 07:38:45 +0200 |
commit | 8a41b1d90ff447fb3014b7402f28f820ddc7c8a6 (patch) | |
tree | a632d4bfa38db51461414bf4641597ba4718cc51 /core/extension | |
parent | 1fc82087658066935bed9e1350d62e334c7e0309 (diff) | |
download | redot-engine-8a41b1d90ff447fb3014b7402f28f820ddc7c8a6.tar.gz |
GDExtension: Use loader to check if the library exists.
Diffstat (limited to 'core/extension')
-rw-r--r-- | core/extension/gdextension_library_loader.cpp | 4 | ||||
-rw-r--r-- | core/extension/gdextension_library_loader.h | 1 | ||||
-rw-r--r-- | core/extension/gdextension_loader.h | 1 | ||||
-rw-r--r-- | core/extension/gdextension_manager.cpp | 3 |
4 files changed, 8 insertions, 1 deletions
diff --git a/core/extension/gdextension_library_loader.cpp b/core/extension/gdextension_library_loader.cpp index 5ba4933c35..d5f2eb668f 100644 --- a/core/extension/gdextension_library_loader.cpp +++ b/core/extension/gdextension_library_loader.cpp @@ -259,6 +259,10 @@ bool GDExtensionLibraryLoader::has_library_changed() const { return false; } +bool GDExtensionLibraryLoader::library_exists() const { + return FileAccess::exists(resource_path); +} + Error GDExtensionLibraryLoader::parse_gdextension_file(const String &p_path) { resource_path = p_path; diff --git a/core/extension/gdextension_library_loader.h b/core/extension/gdextension_library_loader.h index f4372a75d4..f781611b30 100644 --- a/core/extension/gdextension_library_loader.h +++ b/core/extension/gdextension_library_loader.h @@ -77,6 +77,7 @@ public: virtual void close_library() override; virtual bool is_library_open() const override; virtual bool has_library_changed() const override; + virtual bool library_exists() const override; Error parse_gdextension_file(const String &p_path); }; diff --git a/core/extension/gdextension_loader.h b/core/extension/gdextension_loader.h index 7d779858b7..2289550329 100644 --- a/core/extension/gdextension_loader.h +++ b/core/extension/gdextension_loader.h @@ -42,6 +42,7 @@ public: virtual void close_library() = 0; virtual bool is_library_open() const = 0; virtual bool has_library_changed() const = 0; + virtual bool library_exists() const = 0; }; #endif // GDEXTENSION_LOADER_H diff --git a/core/extension/gdextension_manager.cpp b/core/extension/gdextension_manager.cpp index 01efe0d96e..fff938858f 100644 --- a/core/extension/gdextension_manager.cpp +++ b/core/extension/gdextension_manager.cpp @@ -302,7 +302,8 @@ bool GDExtensionManager::ensure_extensions_loaded(const HashSet<String> &p_exten for (const String &loaded_extension : loaded_extensions) { if (!p_extensions.has(loaded_extension)) { // The extension may not have a .gdextension file. - if (!FileAccess::exists(loaded_extension)) { + const Ref<GDExtension> extension = GDExtensionManager::get_singleton()->get_extension(loaded_extension); + if (!extension->get_loader()->library_exists()) { extensions_removed.push_back(loaded_extension); } } |