Merge pull request #93160 from bruvzg/pg_mt_crash
[EditorProgress] Use `BackgroundProgress` instead of `ProgressDialog` when called for a thread.
This commit is contained in:
commit
cf50779ef8
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue