[Editor] Unload addons when using `--import` or `--quit`.

This commit is contained in:
bruvzg 2024-07-09 09:48:45 +03:00
parent 82cedc83c9
commit c151c7dce0
No known key found for this signature in database
GPG Key ID: 7960FCF39844EC38
3 changed files with 19 additions and 2 deletions

View File

@ -3340,13 +3340,17 @@ void EditorNode::_exit_editor(int p_exit_code) {
dim_editor(true);
// Unload addons before quitting to allow cleanup.
unload_editor_addons();
get_tree()->quit(p_exit_code);
}
void EditorNode::unload_editor_addons() {
for (const KeyValue<String, EditorPlugin *> &E : addon_name_to_plugin) {
print_verbose(vformat("Unloading addon: %s", E.key));
remove_editor_plugin(E.value, false);
memdelete(E.value);
}
get_tree()->quit(p_exit_code);
}
void EditorNode::_discard_changes(const String &p_str) {

View File

@ -908,6 +908,7 @@ public:
void save_before_run();
void try_autosave();
void restart_editor();
void unload_editor_addons();
void dim_editor(bool p_dimming);
bool is_editor_dimmed() const;

View File

@ -4176,7 +4176,13 @@ bool Main::iteration() {
movie_writer->add_frame();
}
#ifdef TOOLS_ENABLED
bool quit_after_timeout = false;
#endif
if ((quit_after > 0) && (Engine::get_singleton()->_process_frames >= quit_after)) {
#ifdef TOOLS_ENABLED
quit_after_timeout = true;
#endif
exit = true;
}
@ -4209,6 +4215,12 @@ bool Main::iteration() {
}
#endif
#ifdef TOOLS_ENABLED
if (exit && quit_after_timeout && EditorNode::get_singleton()) {
EditorNode::get_singleton()->unload_editor_addons();
}
#endif
return exit;
}