[Editor] Fix threading problems with TileMap
preview
This commit is contained in:
parent
0bcc0e92b3
commit
dbcd82ba67
1 changed files with 9 additions and 0 deletions
|
@ -68,6 +68,9 @@ void TilesEditorUtils::_thread_func(void *ud) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesEditorUtils::_thread() {
|
void TilesEditorUtils::_thread() {
|
||||||
|
CallQueue queue;
|
||||||
|
MessageQueue::set_thread_singleton_override(&queue);
|
||||||
|
|
||||||
pattern_thread_exited.clear();
|
pattern_thread_exited.clear();
|
||||||
while (!pattern_thread_exit.is_set()) {
|
while (!pattern_thread_exit.is_set()) {
|
||||||
pattern_preview_sem.wait();
|
pattern_preview_sem.wait();
|
||||||
|
@ -127,6 +130,8 @@ void TilesEditorUtils::_thread() {
|
||||||
// Add the viewport at the last moment to avoid rendering too early.
|
// Add the viewport at the last moment to avoid rendering too early.
|
||||||
callable_mp((Node *)EditorNode::get_singleton(), &Node::add_child).call_deferred(viewport, false, Node::INTERNAL_MODE_DISABLED);
|
callable_mp((Node *)EditorNode::get_singleton(), &Node::add_child).call_deferred(viewport, false, Node::INTERNAL_MODE_DISABLED);
|
||||||
|
|
||||||
|
MessageQueue::get_singleton()->flush();
|
||||||
|
|
||||||
RS::get_singleton()->connect(SNAME("frame_pre_draw"), callable_mp(const_cast<TilesEditorUtils *>(this), &TilesEditorUtils::_preview_frame_started), Object::CONNECT_ONE_SHOT);
|
RS::get_singleton()->connect(SNAME("frame_pre_draw"), callable_mp(const_cast<TilesEditorUtils *>(this), &TilesEditorUtils::_preview_frame_started), Object::CONNECT_ONE_SHOT);
|
||||||
|
|
||||||
pattern_preview_done.wait();
|
pattern_preview_done.wait();
|
||||||
|
@ -139,7 +144,11 @@ void TilesEditorUtils::_thread() {
|
||||||
viewport->queue_free();
|
viewport->queue_free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageQueue::get_singleton()->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageQueue::get_singleton()->flush();
|
||||||
pattern_thread_exited.set();
|
pattern_thread_exited.set();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue