Fix editor log flicker.

This commit is contained in:
bruvzg 2023-06-07 20:09:09 +03:00
parent 593d5ca29f
commit 488626701d
No known key found for this signature in database
GPG key ID: 7960FCF39844EC38
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();
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) {

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 {
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;

View file

@ -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;