Fix EditorTranslationParser leak
This commit is contained in:
parent
09a2b77b2d
commit
0e54ba0486
4 changed files with 8 additions and 7 deletions
|
@ -6799,6 +6799,7 @@ EditorNode::EditorNode() {
|
||||||
|
|
||||||
EditorNode::~EditorNode() {
|
EditorNode::~EditorNode() {
|
||||||
EditorInspector::cleanup_plugins();
|
EditorInspector::cleanup_plugins();
|
||||||
|
EditorTranslationParser::get_singleton()->clean_parsers();
|
||||||
|
|
||||||
remove_print_handler(&print_handler);
|
remove_print_handler(&print_handler);
|
||||||
memdelete(EditorHelp::get_doc_data());
|
memdelete(EditorHelp::get_doc_data());
|
||||||
|
|
|
@ -147,6 +147,11 @@ void EditorTranslationParser::remove_parser(const Ref<EditorTranslationParserPlu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorTranslationParser::clean_parsers() {
|
||||||
|
standard_parsers.clear();
|
||||||
|
custom_parsers.clear();
|
||||||
|
}
|
||||||
|
|
||||||
EditorTranslationParser *EditorTranslationParser::get_singleton() {
|
EditorTranslationParser *EditorTranslationParser::get_singleton() {
|
||||||
if (!singleton) {
|
if (!singleton) {
|
||||||
singleton = memnew(EditorTranslationParser);
|
singleton = memnew(EditorTranslationParser);
|
||||||
|
|
|
@ -64,6 +64,7 @@ public:
|
||||||
Ref<EditorTranslationParserPlugin> get_parser(const String &p_extension) const;
|
Ref<EditorTranslationParserPlugin> get_parser(const String &p_extension) const;
|
||||||
void add_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
|
void add_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
|
||||||
void remove_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
|
void remove_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
|
||||||
|
void clean_parsers();
|
||||||
|
|
||||||
EditorTranslationParser();
|
EditorTranslationParser();
|
||||||
~EditorTranslationParser();
|
~EditorTranslationParser();
|
||||||
|
|
|
@ -57,8 +57,6 @@ GDScriptCache *gdscript_cache = nullptr;
|
||||||
#include "language_server/gdscript_language_server.h"
|
#include "language_server/gdscript_language_server.h"
|
||||||
#endif // !GDSCRIPT_NO_LSP
|
#endif // !GDSCRIPT_NO_LSP
|
||||||
|
|
||||||
Ref<GDScriptEditorTranslationParserPlugin> gdscript_translation_parser_plugin;
|
|
||||||
|
|
||||||
class EditorExportGDScript : public EditorExportPlugin {
|
class EditorExportGDScript : public EditorExportPlugin {
|
||||||
GDCLASS(EditorExportGDScript, EditorExportPlugin);
|
GDCLASS(EditorExportGDScript, EditorExportPlugin);
|
||||||
|
|
||||||
|
@ -122,6 +120,7 @@ void register_gdscript_types() {
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
EditorNode::add_init_callback(_editor_init);
|
EditorNode::add_init_callback(_editor_init);
|
||||||
|
|
||||||
|
Ref<GDScriptEditorTranslationParserPlugin> gdscript_translation_parser_plugin;
|
||||||
gdscript_translation_parser_plugin.instance();
|
gdscript_translation_parser_plugin.instance();
|
||||||
EditorTranslationParser::get_singleton()->add_parser(gdscript_translation_parser_plugin, EditorTranslationParser::STANDARD);
|
EditorTranslationParser::get_singleton()->add_parser(gdscript_translation_parser_plugin, EditorTranslationParser::STANDARD);
|
||||||
#endif // TOOLS_ENABLED
|
#endif // TOOLS_ENABLED
|
||||||
|
@ -143,9 +142,4 @@ void unregister_gdscript_types() {
|
||||||
|
|
||||||
ResourceSaver::remove_resource_format_saver(resource_saver_gd);
|
ResourceSaver::remove_resource_format_saver(resource_saver_gd);
|
||||||
resource_saver_gd.unref();
|
resource_saver_gd.unref();
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
|
||||||
EditorTranslationParser::get_singleton()->remove_parser(gdscript_translation_parser_plugin, EditorTranslationParser::STANDARD);
|
|
||||||
gdscript_translation_parser_plugin.unref();
|
|
||||||
#endif // TOOLS_ENABLED
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue