summaryrefslogtreecommitdiff
path: root/modules/mono/csharp_script.h
diff options
context:
space:
mode:
authorIgnacio Roldán Etcheverry <neikeq@users.noreply.github.com>2019-04-26 20:41:13 +0200
committerGitHub <noreply@github.com>2019-04-26 20:41:13 +0200
commit2931b4db5145d17da46caee1ccf4322939751707 (patch)
tree01dc11e24953ac8e79ca2e6d358f318635378270 /modules/mono/csharp_script.h
parent260530f01caa8ea3e2fb7bfda04f4bd718ae14f5 (diff)
parent791e1294c33626adad323f292702221cc09c21cc (diff)
Merge pull request #28433 from neikeq/lazy-load-scripts-metadata
Mono: Lazily load scripts metadata file
Diffstat (limited to 'modules/mono/csharp_script.h')
-rw-r--r--modules/mono/csharp_script.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index 050527d52b..fe4eed2e24 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -309,14 +309,17 @@ class CSharpLanguage : public ScriptLanguage {
int lang_idx;
Dictionary scripts_metadata;
+ bool scripts_metadata_invalidated;
// For debug_break and debug_break_parse
int _debug_parse_err_line;
String _debug_parse_err_file;
String _debug_error;
+ void _load_scripts_metadata();
+
friend class GDMono;
- void _uninitialize_script_bindings();
+ void _on_scripts_domain_unloaded();
public:
StringNameCache string_names;
@@ -341,9 +344,15 @@ public:
void reload_assemblies(bool p_soft_reload);
#endif
- void project_assembly_loaded();
+ _FORCE_INLINE_ Dictionary get_scripts_metadata_or_nothing() {
+ return scripts_metadata_invalidated ? Dictionary() : scripts_metadata;
+ }
- _FORCE_INLINE_ const Dictionary &get_scripts_metadata() { return scripts_metadata; }
+ _FORCE_INLINE_ const Dictionary &get_scripts_metadata() {
+ if (scripts_metadata_invalidated)
+ _load_scripts_metadata();
+ return scripts_metadata;
+ }
virtual String get_name() const;