[plugin] terminal: avoid blowing the stack with recursive calls

```
interpretAnsiSeq
addChars
wrappedAddChars
raw_method_call
[…]
strike_callback
transmit
refresh
interpretAnsiSeq
addChars
wrappedAddChars
raw_method_call
strike_callback
transmit
refresh
```
This commit is contained in:
Benoit Pierre
2025-07-25 10:18:41 +02:00
committed by Frans de Jonge
parent a2633b6374
commit f5b1208a3e

View File

@@ -286,12 +286,7 @@ function Terminal:receive()
return self.chunk:commit(CHUNK_SIZE - free):get() return self.chunk:commit(CHUNK_SIZE - free):get()
end end
function Terminal:refresh(reset) function Terminal:refresh()
if reset then
self.refresh_time = 1/32
UIManager:unschedule(Terminal.refresh)
end
local next_text = self:receive() local next_text = self:receive()
if next_text ~= "" then if next_text ~= "" then
self.input_widget:interpretAnsiSeq(next_text) self.input_widget:interpretAnsiSeq(next_text)
@@ -317,7 +312,11 @@ end
function Terminal:transmit(chars) function Terminal:transmit(chars)
C.write(self.ptmx, chars, #chars) C.write(self.ptmx, chars, #chars)
self:refresh(true) self.refresh_time = 1/32
UIManager:unschedule(Terminal.refresh)
UIManager:tickAfterNext(function()
UIManager:scheduleIn(self.refresh_time, Terminal.refresh, self)
end)
end end
--- kills a running shell --- kills a running shell