diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-29 17:01:01 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:17 -0300 |
| commit | c89ab8eb499e04205f7570e6de71071523e4fa73 (patch) | |
| tree | 5e342799e793f3754ed77613e238f99ded08e6e7 /src/pardes.zig | |
| parent | 9e78acbfeee714ae5a4ce152c2be8c6a7abccf3e (diff) | |
| download | pardes-c89ab8eb499e04205f7570e6de71071523e4fa73.tar.gz pardes-c89ab8eb499e04205f7570e6de71071523e4fa73.zip | |
A write to addr, limit or mark asks for no frame, so its close is not held behind one
Every write that changes a pane set needs_frame, an addr write too, so the editor drew a whole frame after each and the clunk that followed waited for the turn while it did: 0.5 ms (Debug) to 1.2 ms a clunk, what made addr and event write-back 4-10x acme's. An address, a limit and the mark flag are nothing drawn; their writes no longer ask for a frame. Clunk after an addr write: 0.518 -> 0.015 ms (Debug tty, fs.py client).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/pardes.zig')
| -rw-r--r-- | src/pardes.zig | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pardes.zig b/src/pardes.zig index 391fa23d..c1b12a8b 100644 --- a/src/pardes.zig +++ b/src/pardes.zig @@ -5719,7 +5719,10 @@ pub const Pardes = struct { /// local socket costs microseconds and not a vsync. pub fn serveFs(p: *Pardes, req: ctlfs.Req) ctlfs.Reply { if (!ctlfs.changesPane(p, req)) return ctlfs.handle(p, req); - p.needs_frame = true; + // An address, a limit or the mark flag is nothing drawn: a script's + // addr write then its close costs no frame between them. + const drawn = if (ctlfs.Node.target(req.node)) |t| !(t == .pane and (t.pane.file == .addr or t.pane.file == .limit or t.pane.file == .mark)) else true; + if (drawn) p.needs_frame = true; p.raw_hover_intent = false; look.cancelLookHover(p); p.fs.serving = true; |
