1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-22 15:06:45 +00:00

C# script reload fixed

Co-authored-by: Michael Bickel <mib@developium.net>
Co-authored-by: Germanrc <german_1995a@hotmail.com>
This commit is contained in:
Raul Santos
2021-12-06 19:45:59 +01:00
parent 3ae8eda1ed
commit 4a339dc8fd
2 changed files with 8 additions and 5 deletions

View File

@@ -3009,6 +3009,7 @@ void CSharpScript::initialize_for_managed_type(Ref<CSharpScript> p_script, GDMon
CRASH_COND(p_script->native == nullptr); CRASH_COND(p_script->native == nullptr);
p_script->valid = true; p_script->valid = true;
p_script->reload_invalidated = false;
update_script_class_info(p_script); update_script_class_info(p_script);
@@ -3365,13 +3366,13 @@ MethodInfo CSharpScript::get_method_info(const StringName &p_method) const {
} }
Error CSharpScript::reload(bool p_keep_state) { Error CSharpScript::reload(bool p_keep_state) {
bool has_instances; if (!reload_invalidated) {
{ return OK;
MutexLock lock(CSharpLanguage::get_singleton()->script_instances_mutex);
has_instances = instances.size();
} }
ERR_FAIL_COND_V(!p_keep_state && has_instances, ERR_ALREADY_IN_USE); // In the case of C#, reload doesn't really do any script reloading.
// That's done separately via domain reloading.
reload_invalidated = false;
GD_MONO_SCOPE_THREAD_ATTACH; GD_MONO_SCOPE_THREAD_ATTACH;
@@ -3558,6 +3559,7 @@ void CSharpScript::_update_name() {
void CSharpScript::_clear() { void CSharpScript::_clear() {
tool = false; tool = false;
valid = false; valid = false;
reload_invalidated = true;
base = nullptr; base = nullptr;
native = nullptr; native = nullptr;

View File

@@ -101,6 +101,7 @@ private:
bool tool = false; bool tool = false;
bool valid = false; bool valid = false;
bool reload_invalidated = false;
bool builtin; bool builtin;