File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,10 @@ GDExtensionManager::LoadStatus GDExtensionManager::_load_extension_internal(cons
55
55
gdextension_class_icon_paths[kv.key ] = kv.value ;
56
56
}
57
57
58
+ return LOAD_STATUS_OK;
59
+ }
60
+
61
+ void GDExtensionManager::_finish_load_extension (const Ref<GDExtension> &p_extension) {
58
62
#ifdef TOOLS_ENABLED
59
63
// Signals that a new extension is loaded so GDScript can register new class names.
60
64
emit_signal (" extension_loaded" , p_extension);
@@ -67,8 +71,6 @@ GDExtensionManager::LoadStatus GDExtensionManager::_load_extension_internal(cons
67
71
p_extension->startup_callback ();
68
72
}
69
73
}
70
-
71
- return LOAD_STATUS_OK;
72
74
}
73
75
74
76
GDExtensionManager::LoadStatus GDExtensionManager::_unload_extension_internal (const Ref<GDExtension> &p_extension) {
@@ -134,6 +136,8 @@ GDExtensionManager::LoadStatus GDExtensionManager::load_extension_with_loader(co
134
136
return status;
135
137
}
136
138
139
+ _finish_load_extension (extension);
140
+
137
141
extension->set_path (p_path);
138
142
gdextension_map[p_path] = extension;
139
143
return LOAD_STATUS_OK;
@@ -186,6 +190,10 @@ GDExtensionManager::LoadStatus GDExtensionManager::reload_extension(const String
186
190
187
191
extension->finish_reload ();
188
192
193
+ // Needs to come after reload is fully finished, so all objects using
194
+ // extension classes are in a consistent state.
195
+ _finish_load_extension (extension);
196
+
189
197
return LOAD_STATUS_OK;
190
198
#endif
191
199
}
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ class GDExtensionManager : public Object {
57
57
58
58
private:
59
59
LoadStatus _load_extension_internal (const Ref<GDExtension> &p_extension, bool p_first_load);
60
+ void _finish_load_extension (const Ref<GDExtension> &p_extension);
60
61
LoadStatus _unload_extension_internal (const Ref<GDExtension> &p_extension);
61
62
62
63
#ifdef TOOLS_ENABLED
You can’t perform that action at this time.
0 commit comments