From 980529029f1e25782cea2e6c915983a5250d2ca6 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 30 Apr 2025 18:51:55 +0200 Subject: [PATCH] feat(flicker): avoid triggering initial render from branch widget --- src/tui/status/branch.zig | 3 ++- src/tui/tui.zig | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tui/status/branch.zig b/src/tui/status/branch.zig index 706c7b5..ce368ef 100644 --- a/src/tui/status/branch.zig +++ b/src/tui/status/branch.zig @@ -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; diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 607c037..7998654 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -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();