|
@@ -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) {
|