Merge pull request #77973 from bruvzg/fix_rtl_rebuild

Fix editor log flicker.
This commit is contained in:
Rémi Verschelde 2023-06-12 22:54:47 +02:00
commit 380ee3c0c0
No known key found for this signature in database
GPG Key ID: C3336907360768E1
3 changed files with 21 additions and 1 deletions

View File

@ -346,6 +346,15 @@ void EditorLog::_add_log_line(LogMessage &p_message, bool p_replace_previous) {
} }
log->add_newline(); 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) { void EditorLog::_set_filter_active(bool p_active, MessageType p_message_type) {

View File

@ -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 { bool RichTextLabel::is_ready() const {
const_cast<RichTextLabel *>(this)->_validate_line_caches();
if (updating.load()) { if (updating.load()) {
return false; return false;
} }
@ -3177,7 +3186,8 @@ bool RichTextLabel::remove_paragraph(const int p_paragraph) {
main->lines[0].from = main; 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(); queue_redraw();
return true; return true;

View File

@ -684,6 +684,7 @@ public:
bool is_deselect_on_focus_loss_enabled() const; bool is_deselect_on_focus_loss_enabled() const;
void deselect(); void deselect();
int get_pending_paragraphs() const;
bool is_ready() const; bool is_ready() const;
bool is_updating() const; bool is_updating() const;