Merge pull request #77973 from bruvzg/fix_rtl_rebuild
Fix editor log flicker.
This commit is contained in:
commit
380ee3c0c0
|
@ -346,6 +346,15 @@ void EditorLog::_add_log_line(LogMessage &p_message, bool p_replace_previous) {
|
|||
}
|
||||
|
||||
log->add_newline();
|
||||
|
||||
if (p_replace_previous) {
|
||||
// Force sync last line update (skip if number of unprocessed log messages is too large to avoid editor lag).
|
||||
if (log->get_pending_paragraphs() < 100) {
|
||||
while (!log->is_ready()) {
|
||||
::OS::get_singleton()->delay_usec(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EditorLog::_set_filter_active(bool p_active, MessageType p_message_type) {
|
||||
|
|
|
@ -2741,7 +2741,16 @@ void RichTextLabel::_stop_thread() {
|
|||
}
|
||||
}
|
||||
|
||||
int RichTextLabel::get_pending_paragraphs() const {
|
||||
int to_line = main->first_invalid_line.load();
|
||||
int lines = main->lines.size();
|
||||
|
||||
return lines - to_line;
|
||||
}
|
||||
|
||||
bool RichTextLabel::is_ready() const {
|
||||
const_cast<RichTextLabel *>(this)->_validate_line_caches();
|
||||
|
||||
if (updating.load()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -3177,7 +3186,8 @@ bool RichTextLabel::remove_paragraph(const int p_paragraph) {
|
|||
main->lines[0].from = main;
|
||||
}
|
||||
|
||||
main->first_invalid_line.store(0);
|
||||
int to_line = main->first_invalid_line.load();
|
||||
main->first_invalid_line.store(MIN(to_line, p_paragraph));
|
||||
queue_redraw();
|
||||
|
||||
return true;
|
||||
|
|
|
@ -684,6 +684,7 @@ public:
|
|||
bool is_deselect_on_focus_loss_enabled() const;
|
||||
void deselect();
|
||||
|
||||
int get_pending_paragraphs() const;
|
||||
bool is_ready() const;
|
||||
bool is_updating() const;
|
||||
|
||||
|
|
Loading…
Reference in New Issue