Skip to content

Commit

Permalink
Merge pull request #52883 from Germanrc/script_reload_fix
Browse files Browse the repository at this point in the history
C# scripts reload in editor fixed
  • Loading branch information
akien-mga authored Sep 24, 2021
2 parents 044cafc + 84a218d commit 6e39566
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
13 changes: 7 additions & 6 deletions modules/mono/csharp_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2707,6 +2707,7 @@ int CSharpScript::_try_get_member_export_hint(IMonoClassMember *p_member, Manage
void CSharpScript::_clear() {
tool = false;
valid = false;
reload_invalidated = true;

base = NULL;
native = NULL;
Expand Down Expand Up @@ -2810,6 +2811,7 @@ void CSharpScript::initialize_for_managed_type(Ref<CSharpScript> p_script, GDMon

p_script->valid = true;
p_script->tool = p_script->script_class->has_attribute(CACHED_CLASS(ToolAttribute));
p_script->reload_invalidated = false;

if (!p_script->tool) {
GDMonoClass *nesting_class = p_script->script_class->get_nesting_class();
Expand Down Expand Up @@ -3116,13 +3118,12 @@ MethodInfo CSharpScript::get_method_info(const StringName &p_method) const {
}

Error CSharpScript::reload(bool p_keep_state) {
bool has_instances;
{
MutexLock lock(CSharpLanguage::get_singleton()->script_instances_mutex);
has_instances = instances.size();
if (!reload_invalidated) {
return OK;
}

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;

Expand Down
1 change: 1 addition & 0 deletions modules/mono/csharp_script.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class CSharpScript : public Script {

bool tool;
bool valid;
bool reload_invalidated;

bool builtin;

Expand Down

0 comments on commit 6e39566

Please sign in to comment.