diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-01-26 07:28:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-26 07:28:50 +0100 |
commit | a98e9496eb71554656c7c1eed9a69d20aed9886c (patch) | |
tree | 06c08983cf69d77b5ff56cb10fad7ea2cc723b8a /modules | |
parent | 76ec7280036930a7701d0a92a817ca3a79fcd936 (diff) | |
parent | 562ec3f5e6260592e14db3d7d388eb5585c99381 (diff) |
Merge pull request #16073 from neikeq/AaaaHH
Mono: Don't defer call to dispose queue objects when finalizing domain
Diffstat (limited to 'modules')
-rw-r--r-- | modules/mono/mono_gd/gd_mono.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index 6c07c90f79..f5febd415b 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -696,11 +696,13 @@ bool _GodotSharp::is_domain_loaded() { return GDMono::get_singleton()->get_scripts_domain() != NULL; } -#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \ - m_queue.push_back(m_inst); \ - if (queue_empty) { \ - queue_empty = false; \ - call_deferred("_dispose_callback"); \ +#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \ + m_queue.push_back(m_inst); \ + if (queue_empty) { \ + queue_empty = false; \ + if (!is_finalizing_domain()) { /* call_deferred may not be safe here */ \ + call_deferred("_dispose_callback"); \ + } \ } void _GodotSharp::queue_dispose(MonoObject *p_mono_object, Object *p_object) { |