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 1/2] 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(); From c507fb905d9d1e4e7871f7b907157b7f071e3b3e Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 30 Apr 2025 18:52:44 +0200 Subject: [PATCH 2/2] fix(flicker): home screen should not load if we have a file to open --- src/main.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 6a6e16a..21a9677 100644 --- a/src/main.zig +++ b/src/main.zig @@ -291,7 +291,8 @@ pub fn main() anyerror!void { for (links.items) |link| { try file_link.navigate(tui_proc.ref(), &link); - } else { + } + if (links.items.len == 0) { if (!have_project) try tui_proc.send(.{ "cmd", "open_project_cwd" }); try tui_proc.send(.{ "cmd", "show_home" });