terminal: cleaner impl of getTopLeft(.active)

This commit is contained in:
Mitchell Hashimoto
2024-03-17 21:18:24 -07:00
parent b76995b5af
commit e8a2dc5715

View File

@ -2369,17 +2369,18 @@ pub fn getTopLeft(self: *const PageList, tag: point.Tag) Pin {
// much faster because we don't need to update the top left. Under // much faster because we don't need to update the top left. Under
// heavy load this makes a measurable difference. // heavy load this makes a measurable difference.
.active => active: { .active => active: {
var page = self.pages.last.?;
var rem = self.rows; var rem = self.rows;
while (rem > page.data.size.rows) { var it = self.pages.last;
rem -= page.data.size.rows; while (it) |page| : (it = page.prev) {
page = page.prev.?; // assertion: we always have enough rows for active if (rem <= page.data.size.rows) break :active .{
}
break :active .{
.page = page, .page = page,
.y = page.data.size.rows - rem, .y = page.data.size.rows - rem,
}; };
rem -= page.data.size.rows;
}
unreachable; // assertion: we always have enough rows for active
}, },
}; };
} }