batch terminal output at 60fps, increase read buffer to 64KB
test / unit + widget + golden + a11y (push) Failing after 29s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
test / unit + widget + golden + a11y (push) Failing after 29s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
Split escape sequences caused rendering artifacts (visible % prompt mark, garbled lines between commands). Two fixes from the legacy Python implementation: 1. Read buffer increased from 4096 to 65536 bytes. Larger reads mean fewer chunk boundaries that can split multi-byte escape sequences. 2. Output writes throttled to ~60fps via a 16ms Timer. Multiple PTY reads within one frame window are batched into a single terminal.write() call, so the xterm parser sees complete sequences instead of fragments that render as garbage between frames. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
0485a36091
commit
3e6c0279ef
@@ -236,7 +236,7 @@ class NativePty {
|
||||
ffi.Int32 Function(ffi.Pointer<_Pollfd>, ffi.Uint32, ffi.Int32),
|
||||
int Function(ffi.Pointer<_Pollfd>, int, int)>('poll');
|
||||
|
||||
final buf = malloc<ffi.Uint8>(4096);
|
||||
final buf = malloc<ffi.Uint8>(65536);
|
||||
final pfd = calloc<_Pollfd>();
|
||||
pfd.ref.fd = fd;
|
||||
pfd.ref.events = 0x0001; // POLLIN
|
||||
@@ -249,7 +249,7 @@ class NativePty {
|
||||
if (pfd.ref.revents & 0x0038 != 0 && pfd.ref.revents & 0x0001 == 0) {
|
||||
break;
|
||||
}
|
||||
final n = rd(fd, buf.cast(), 4096);
|
||||
final n = rd(fd, buf.cast(), 65536);
|
||||
if (n <= 0) break;
|
||||
port.send(Uint8List.fromList(buf.asTypedList(n)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user