From 214c3498692cc7d81e233fcf6c27dccf448ab591 Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch
Date: Tue, 12 Nov 2024 16:19:44 +0100 Subject: xA: limit buffer length --- xA/xA.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/xA/xA.go b/xA/xA.go index e5f5ce8..cb6ede9 100644 --- a/xA/xA.go +++ b/xA/xA.go @@ -375,6 +375,17 @@ func bufferToggleUnimportant(name string) { }, nil) } +func bufferPushLine(b *buffer, line bufferLine) { + b.lines = append(b.lines, line) + + // Fyne's text layouting is extremely slow. + // The limit could be made configurable, + // and we could use a ring buffer approach to storing the lines. + if len(b.lines) > 100 { + b.lines = slices.Delete(b.lines, 0, 1) + } +} + // --- Current buffer ---------------------------------------------------------- func bufferToggleLogFinish(err string, response *RelayResponseDataBufferLog) { @@ -755,7 +766,7 @@ func relayProcessBufferLine(b *buffer, m *RelayEventDataBufferLine) { // Initial sync: skip all other processing, let highlights be. bc := bufferByName(bufferCurrent) if bc == nil { - b.lines = append(b.lines, line) + bufferPushLine(b, line) return } @@ -767,7 +778,7 @@ func relayProcessBufferLine(b *buffer, m *RelayEventDataBufferLine) { separate := display && !visible && bc.newMessages == 0 && bc.newUnimportantMessages == 0 - b.lines = append(b.lines, line) + bufferPushLine(b, line) if !(visible || m.LeakToActive) || b.newMessages != 0 || b.newUnimportantMessages != 0 { if line.isUnimportant || m.LeakToActive { @@ -780,7 +791,7 @@ func relayProcessBufferLine(b *buffer, m *RelayEventDataBufferLine) { if m.LeakToActive { leakedLine := line leakedLine.leaked = true - bc.lines = append(bc.lines, leakedLine) + bufferPushLine(bc, leakedLine) if !visible || bc.newMessages != 0 || bc.newUnimportantMessages != 0 { if line.isUnimportant { -- cgit v1.2.3-70-g09d2