summaryrefslogtreecommitdiffstats
path: root/editor/export/project_export.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/export/project_export.cpp')
-rw-r--r--editor/export/project_export.cpp52
1 files changed, 27 insertions, 25 deletions
diff --git a/editor/export/project_export.cpp b/editor/export/project_export.cpp
index cacdf108cf..f2c5eeb2ed 100644
--- a/editor/export/project_export.cpp
+++ b/editor/export/project_export.cpp
@@ -1109,37 +1109,40 @@ void ProjectExportDialog::_export_all_dialog_action(const String &p_str) {
}
void ProjectExportDialog::_export_all(bool p_debug) {
- String export_target = p_debug ? TTR("Debug") : TTR("Release");
- EditorProgress ep("exportall", TTR("Exporting All") + " " + export_target, EditorExport::get_singleton()->get_export_preset_count(), true);
-
exporting = true;
-
bool show_dialog = false;
- result_dialog_log->clear();
- for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
- Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
- if (preset.is_null()) {
- exporting = false;
- ERR_FAIL_MSG("Failed to start the export: one of the presets is invalid.");
- }
- Ref<EditorExportPlatform> platform = preset->get_platform();
- if (platform.is_null()) {
- exporting = false;
- ERR_FAIL_MSG("Failed to start the export: one of the presets has no valid platform.");
- }
+ { // Scope for the editor progress, we must free it before showing the dialog at the end.
+ String export_target = p_debug ? TTR("Debug") : TTR("Release");
+ EditorProgress ep("exportall", TTR("Exporting All") + " " + export_target, EditorExport::get_singleton()->get_export_preset_count(), true);
- ep.step(preset->get_name(), i);
+ result_dialog_log->clear();
+ for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
+ Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
+ if (preset.is_null()) {
+ exporting = false;
+ ERR_FAIL_MSG("Failed to start the export: one of the presets is invalid.");
+ }
- platform->clear_messages();
- Error err = platform->export_project(preset, p_debug, preset->get_export_path(), 0);
- if (err == ERR_SKIP) {
- exporting = false;
- return;
+ Ref<EditorExportPlatform> platform = preset->get_platform();
+ if (platform.is_null()) {
+ exporting = false;
+ ERR_FAIL_MSG("Failed to start the export: one of the presets has no valid platform.");
+ }
+
+ ep.step(preset->get_name(), i);
+
+ platform->clear_messages();
+ Error err = platform->export_project(preset, p_debug, preset->get_export_path(), 0);
+ if (err == ERR_SKIP) {
+ exporting = false;
+ return;
+ }
+ bool has_messages = platform->fill_log_messages(result_dialog_log, err);
+ show_dialog = show_dialog || has_messages;
}
- bool has_messages = platform->fill_log_messages(result_dialog_log, err);
- show_dialog = show_dialog || has_messages;
}
+
if (show_dialog) {
result_dialog->popup_centered_ratio(0.5);
}
@@ -1148,7 +1151,6 @@ void ProjectExportDialog::_export_all(bool p_debug) {
}
void ProjectExportDialog::_bind_methods() {
- ClassDB::bind_method("_export_all", &ProjectExportDialog::_export_all);
ClassDB::bind_method("set_export_path", &ProjectExportDialog::set_export_path);
ClassDB::bind_method("get_export_path", &ProjectExportDialog::get_export_path);
ClassDB::bind_method("get_current_preset", &ProjectExportDialog::get_current_preset);