From 7acaa0d3206ee2863bd81acd0bb0aa77b66c687d Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:51:36 +0300 Subject: [PATCH] [EditorProgress] Use `BackgroundProgress` instead of `ProgressDialog` when called for a thread. --- editor/editor_node.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/editor/editor_node.h b/editor/editor_node.h index 899da994501..2127d30765c 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -928,12 +928,29 @@ public: struct EditorProgress { String task; - bool step(const String &p_state, int p_step = -1, bool p_force_refresh = true) { return EditorNode::progress_task_step(task, p_state, p_step, p_force_refresh); } + bool step(const String &p_state, int p_step = -1, bool p_force_refresh = true) { + if (Thread::is_main_thread()) { + return EditorNode::progress_task_step(task, p_state, p_step, p_force_refresh); + } else { + EditorNode::progress_task_step_bg(task, p_step); + return false; + } + } EditorProgress(const String &p_task, const String &p_label, int p_amount, bool p_can_cancel = false) { - EditorNode::progress_add_task(p_task, p_label, p_amount, p_can_cancel); + if (Thread::is_main_thread()) { + EditorNode::progress_add_task(p_task, p_label, p_amount, p_can_cancel); + } else { + EditorNode::progress_add_task_bg(p_task, p_label, p_amount); + } task = p_task; } - ~EditorProgress() { EditorNode::progress_end_task(task); } + ~EditorProgress() { + if (Thread::is_main_thread()) { + EditorNode::progress_end_task(task); + } else { + EditorNode::progress_end_task_bg(task); + } + } }; class EditorPluginList : public Object {