diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-01-18 14:48:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-18 14:48:55 +0100 |
commit | fd5fb7d64adefb40d8de94236bf41938aa020d21 (patch) | |
tree | b419259fca80c41db127327bd85a0894cf5e1f23 | |
parent | ca93518ebbdc94575a9a9d0e379712bbd7f64749 (diff) | |
parent | 2ec7c6a6bcc340b6bd196ef8be53bcd6469fe177 (diff) |
Merge pull request #56899 from touilleMan/fix-editor_node-set_exit_code
-rw-r--r-- | core/os/os.h | 3 | ||||
-rw-r--r-- | editor/editor_node.cpp | 15 | ||||
-rw-r--r-- | editor/editor_node.h | 2 |
3 files changed, 12 insertions, 8 deletions
diff --git a/core/os/os.h b/core/os/os.h index 6b4e2798bd..36d85da70b 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -295,6 +295,9 @@ public: virtual void debug_break(); virtual int get_exit_code() const; + // `set_exit_code` should only be used from `SceneTree` (or from a similar + // level, e.g. from the `Main::start` if leaving without creating a `SceneTree`). + // For other components, `SceneTree.quit()` should be used instead. virtual void set_exit_code(int p_code); virtual int get_processor_count() const; diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 11efe7202e..cc92d391d9 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -957,9 +957,10 @@ void EditorNode::_fs_changed() { if (!export_error.is_empty()) { ERR_PRINT(export_error); - OS::get_singleton()->set_exit_code(EXIT_FAILURE); + _exit_editor(EXIT_FAILURE); + } else { + _exit_editor(EXIT_SUCCESS); } - _exit_editor(); } } @@ -1775,7 +1776,7 @@ void EditorNode::restart_editor() { to_reopen = get_tree()->get_edited_scene_root()->get_scene_file_path(); } - _exit_editor(); + _exit_editor(EXIT_SUCCESS); List<String> args; args.push_back("--path"); @@ -3000,7 +3001,7 @@ int EditorNode::_next_unsaved_scene(bool p_valid_filename, int p_start) { return -1; } -void EditorNode::_exit_editor() { +void EditorNode::_exit_editor(int p_exit_code) { exiting = true; resource_preview->stop(); // stop early to avoid crashes _save_docks(); @@ -3008,7 +3009,7 @@ void EditorNode::_exit_editor() { // Dim the editor window while it's quitting to make it clearer that it's busy dim_editor(true); - get_tree()->quit(); + get_tree()->quit(p_exit_code); } void EditorNode::_discard_changes(const String &p_str) { @@ -3058,12 +3059,12 @@ void EditorNode::_discard_changes(const String &p_str) { } break; case FILE_QUIT: { _menu_option_confirm(RUN_STOP, true); - _exit_editor(); + _exit_editor(EXIT_SUCCESS); } break; case RUN_PROJECT_MANAGER: { _menu_option_confirm(RUN_STOP, true); - _exit_editor(); + _exit_editor(EXIT_SUCCESS); String exec = OS::get_singleton()->get_executable_path(); List<String> args; diff --git a/editor/editor_node.h b/editor/editor_node.h index 7f5d23dbde..ff56040297 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -535,7 +535,7 @@ private: void _add_dropped_files_recursive(const Vector<String> &p_files, String to_path); String _recent_scene; - void _exit_editor(); + void _exit_editor(int p_exit_code); bool convert_old; |