Cleanup / optimizations

This commit is contained in:
2026-02-12 01:01:52 +00:00
parent e9d164d769
commit c683754d49
8 changed files with 141 additions and 78 deletions
+19 -9
View File
@@ -46,20 +46,26 @@ void Parser::work() {
return;
std::vector<uint32_t> batch;
uint32_t line_count = editor->root->line_count + 1;
int64_t start = MIN(scroll_max + 10, line_count - 1);
int64_t end = MAX(0, (int64_t)scroll_max - MAX_LINES_LOOKBEHIND);
for (int64_t i = start; i >= end; --i) {
auto l_opt = line_map.at(i);
if (!l_opt || (l_opt && !l_opt->out_state))
uint32_t min_line =
scroll_max > MAX_LINES_LOOKAROUND ? scroll_max - MAX_LINES_LOOKAROUND : 0;
uint32_t max_line = MIN(scroll_max + MAX_LINES_LOOKAROUND, line_count - 1);
bool sequential = false;
for (uint32_t i = min_line; i <= max_line; ++i) {
LineData *ld = line_map.at(i);
if ((!ld || !ld->in_state || !ld->out_state) && !sequential) {
batch.push_back(i);
sequential = true;
continue;
}
sequential = false;
}
for (uint32_t c_line : batch) {
if (!running.load(std::memory_order_relaxed))
break;
uint32_t min_line = scroll_max > MAX_LINES_LOOKBEHIND
? scroll_max - MAX_LINES_LOOKBEHIND
uint32_t min_line = scroll_max > MAX_LINES_LOOKAROUND
? scroll_max - MAX_LINES_LOOKAROUND
: 0;
uint32_t max_line = scroll_max + 10;
uint32_t max_line = scroll_max + MAX_LINES_LOOKAROUND;
if (c_line < min_line || c_line > max_line)
continue;
uint32_t scroll_snapshot = scroll_max;
@@ -78,8 +84,12 @@ void Parser::work() {
break;
if (scroll_snapshot != scroll_max)
break;
if (cur_line < min_line || cur_line > max_line)
if (cur_line < min_line || cur_line > max_line) {
LineData *line_data = line_map.at(cur_line);
if (line_data)
line_data->out_state = nullptr;
break;
}
uint32_t len;
char *line = next_line(it, &len);
if (!line)