feat(flicker): avoid triggering initial render from branch widget

This commit is contained in:
CJ van den Berg 2025-04-30 18:51:55 +02:00
parent 5b077a8581
commit 980529029f
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 9 additions and 1 deletions

View file

@ -93,7 +93,8 @@ fn process_git(self: *Self, m: tp.message) MessageFilter.Error!bool {
}
fn process_status(self: *Self, m: tp.message) MessageFilter.Error!bool {
defer Widget.need_render();
defer if (tui.frames_rendered() > 0)
Widget.need_render();
var value: []const u8 = undefined;
var ahead: []const u8 = undefined;

View file

@ -61,6 +61,7 @@ fontface_: []const u8 = "",
fontfaces_: std.ArrayListUnmanaged([]const u8) = .{},
enable_mouse_idle_timer: bool = false,
query_cache_: *syntax.QueryCache,
frames_rendered_: usize = 0,
const keepalive = std.time.us_per_day * 365; // one year
const idle_frames = 0;
@ -449,6 +450,7 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void {
}
fn render(self: *Self) void {
defer self.frames_rendered_ += 1;
const current_time = std.time.microTimestamp();
if (current_time < self.frame_last_time) { // clock moved backwards
self.frame_last_time = current_time;
@ -1184,6 +1186,11 @@ pub fn need_render() void {
}
}
pub fn frames_rendered() usize {
const self = current();
return self.frames_rendered_;
}
pub fn resize() void {
mainview_widget().resize(screen());
refresh_hover();